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 相关文章推荐
Oracle 常见问题解答
Oct 09 PHP
php 面向对象的一个例子
Apr 12 PHP
PHP 获取文件路径(灵活应用__FILE__)
Feb 15 PHP
PHP读取RSS(Feed)简单实例
Jun 12 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
PHP并发多进程处理利器Gearman使用介绍
May 16 PHP
PHP微信红包生成代码分享
Oct 06 PHP
PHP实现二维数组按某列进行排序的方法
Nov 18 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 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
php print EOF实现方法
2009/05/21 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
python在每个字符后添加空格的实例
2018/05/07 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
大学生水文观测实习自我鉴定
2013/09/29 职场文书
建筑设计专业求职自我评价
2014/03/02 职场文书
书法大赛策划方案
2014/06/04 职场文书
企业文化标语大全
2014/06/10 职场文书
忠诚教育心得体会
2014/09/03 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
Python多个MP4合成视频的实现方法
2021/07/16 Python