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中日期加减法运算实现代码
Dec 08 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
php对象和数组相互转换的方法
May 12 PHP
php遍历类中包含的所有元素的方法
May 12 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
php实现留言板功能(代码详解)
Mar 28 PHP
PDO::getAttribute讲解
Jan 28 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 PHP
TP5多入口设置实例讲解
Dec 15 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 cli 方式 在crotab中运行解决
2010/02/08 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
thinkphp3.2.3 分页代码分享
2016/07/28 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
jquery里的each使用方法详解
2010/12/22 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
js获取地址栏中传递的参数(两种方法)
2017/02/08 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
从零学Python之入门(五)缩进和选择
2014/05/27 Python
python之wxPython菜单使用详解
2014/09/28 Python
Python中取整的几种方法小结
2017/01/06 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
学生会竞选自荐信
2013/10/12 职场文书
大学生求职推荐信
2013/11/27 职场文书
什么样的创业计划书可行性高?
2014/02/01 职场文书
小学语文国培感言
2014/03/04 职场文书
留学推荐信英文范文
2015/03/26 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang