Laravel 框架控制器 Controller原理与用法实例分析


Posted in PHP onApril 14, 2020

本文实例讲述了Laravel 框架控制器 Controller原理与用法。分享给大家供大家参考,具体如下:

一、控制器存在的意义

路由可以分发请求;
路由中还可以引入 html 页面;
我们可以在 route/web.php 中搞定一切了;
但是如果把业务逻辑都写入到路由中;
那路由将庞大的难以维护;
于是控制器就有了很明显的存在价值;
把业务逻辑写在控制器中;
路由只负责转发请求到指定的控制器即可;

二、创建控制器

我们可以直接使用 Laravel 内置的命令生成很多代码,例如控制器;

artisan 就是 laravel 的命令行接口;
就是根目录下的 artisan 文件;

下面来使用命令创建一个控制器

php artisan make:controller ArticleController

运行完成后会生成一个 app/Http/Controllers/ArticleController.php 文件

Laravel 框架控制器 Controller原理与用法实例分析

接下来就需要在新创建的控制器中写各种方法,但是,只要在刚刚的命令中加入一个参数就可以自动生成一些方法

php artisan make:controller ArticleController --resource

如果直接运行的话是会报错的;
提示 Controller already exists!
因为我们刚已经创建过 ArticleController了;
所以我们需要先把 app/Http/Controllers/ArticleController.php 文件删掉再运行;
那么会再次生成一个 app/Http/Controllers/ArticleController.php 文件;

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ArticleController extends Controller
{
  /**
   * Display a listing of the resource.
   *
   * @return \Illuminate\Http\Response
   */
  public function index()
  {
    //
  }

  /**
   * Show the form for creating a new resource.
   *
   * @return \Illuminate\Http\Response
   */
  public function create()
  {
    //
  }

  /**
   * Store a newly created resource in storage.
   *
   * @param \Illuminate\Http\Request $request
   * @return \Illuminate\Http\Response
   */
  public function store(Request $request)
  {
    //
  }

  /**
   * Display the specified resource.
   *
   * @param int $id
   * @return \Illuminate\Http\Response
   */
  public function show($id)
  {
    //
  }

  /**
   * Show the form for editing the specified resource.
   *
   * @param int $id
   * @return \Illuminate\Http\Response
   */
  public function edit($id)
  {
    //
  }

  /**
   * Update the specified resource in storage.
   *
   * @param \Illuminate\Http\Request $request
   * @param int $id
   * @return \Illuminate\Http\Response
   */
  public function update(Request $request, $id)
  {
    //
  }

  /**
   * Remove the specified resource from storage.
   *
   * @param int $id
   * @return \Illuminate\Http\Response
   */
  public function destroy($id)
  {
    //
  }
}

增删改查的方法都定义好了;
连注释都给写好了;

这其实是按 RESTful 规范生成的格式;
除了 GET POST 它还包含了一大堆请求方式;
PUT 、 PATCH 、 DELETE 、HEAD 、OPTIONS;
也就是说 Route:: 后面还可以跟上面这些方法;

Route::put('article', function () {
  return view('article');
});

三、什么是 artisan 

laravel 是一个现代化框架;
它对命令行有着非常好的支持;
artisan 就是 laravel 的命令行接口;
就是根目录下的 artisan 文件;

Laravel 框架控制器 Controller原理与用法实例分析

我们可以把它理解为命令行级的单入口文件;
跟 index.php 文件的使命一样;
所有的命令行都从它这走;
所以如果想使用命令行;
就需要 cd 到项目的根目录下;
或者手动指定一长串路径;

Laravel 框架控制器 Controller原理与用法实例分析

 在命令行中以 php 开头意思是用 php 来执行某个文件;
php index.php 意思就是使用 php 的命令行模式运行 index.php ;
命令行下是可以不需要文件后缀就能识别的;

你可以创建个 test 的文本文件,然后在里面写一些php代码,使用命令行 php test 也是可以正常运行的;
所以根目录下的 artisan 文件并没有带上 .php ;

 命令行主要有两个方向的应用;
第一是生成文件;
第二是执行任务;

四、路由绑定控制器方法

在上面生成的控制器方法 index 中写入如下代码

Laravel 框架控制器 Controller原理与用法实例分析

然后写一个路由绑定这个控制器方法,在  routes/web.php 中添加如下代码

Route::get('article/index', 'ArticleController@index');

打开链接 

http://127.0.0.1:8000/article/index

 Laravel 框架控制器 Controller原理与用法实例分析

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP分页显示制作详细讲解
Oct 09 PHP
用php来检测proxy
Oct 09 PHP
PHP数据缓存技术
Feb 14 PHP
PHP面向对象分析设计的经验原则
Sep 20 PHP
php Notice: Undefined index 错误提示解决方法
Aug 29 PHP
探讨如何在php168_cms中提取验证码
Jun 08 PHP
推荐25款php中非常有用的类库
Sep 29 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
Thinkphp批量更新数据的方法汇总
Jun 29 PHP
PHPStrom 新建FTP项目以及在线操作教程
Oct 16 PHP
PHP数据库处理封装类实例
Dec 24 PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 14 PHP
Laravel 框架路由原理与路由访问实例分析
Apr 14 #PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 #PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
Apr 14 #PHP
PHP 自动加载类原理与用法实例分析
Apr 14 #PHP
php操作redis常见方法示例【key与value操作】
Apr 14 #PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 #PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
Apr 14 #PHP
You might like
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
php事件驱动化设计详解
2016/11/10 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
解决jquery实现的radio重新选中的问题
2015/07/03 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
Python实现控制台中的进度条功能代码
2017/12/22 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
演讲稿怎么写
2014/01/07 职场文书
杠杆的科学教学反思
2014/01/10 职场文书
我的老师教学反思
2014/05/01 职场文书
优秀员工推荐信
2014/05/10 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
Python编解码问题及文本文件处理方法详解
2021/06/20 Python