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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
Oct 09 PHP
php5 and xml示例
Nov 22 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
Mar 02 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
PHP实现AES256加密算法实例
Sep 22 PHP
php准确计算复活节日期的方法
Apr 18 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
PHP获取数组中指定的一列实例
Dec 27 PHP
PHP+redis实现的购物车单例类示例
Feb 02 PHP
php多进程中的阻塞与非阻塞操作实例分析
Mar 04 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 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
pw的一个放后门的方法分析
2007/10/08 PHP
php+mysql事务rollback&amp;commit示例
2010/02/08 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
CSS常用网站布局实例
2008/04/03 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python 模块EasyGui详细介绍
2017/02/19 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
python书籍信息爬虫实例
2018/03/19 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
法律专业个人实习自我鉴定
2013/09/23 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
2014年大学生工作总结
2014/11/20 职场文书
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android