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 相关文章推荐
PR值查询 | PageRank 查询
Dec 20 PHP
php a simple smtp class
Nov 26 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
php设计模式之单例模式使用示例
Jan 20 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
PHP SESSION的增加、删除、修改、查看操作
Mar 20 PHP
php生成图片验证码
Jun 09 PHP
PHP使用flock实现文件加锁的方法
Jul 01 PHP
Netbeans 8.2将支持PHP7 更精彩
Jun 13 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
PHP一个简单的无需刷新爬虫
Jan 05 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新手上路(四)
2006/10/09 PHP
php 分页类 扩展代码
2009/06/11 PHP
php后退一页表单内容保存实现方法
2012/06/17 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
PHP获取windows登录用户名的方法
2014/06/24 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
由浅入深剖析Angular表单验证
2016/07/14 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
python实现FTP服务器服务的方法
2017/04/11 Python
Python中import机制详解
2017/11/14 Python
意大利单身交友网站:Meetic
2020/07/12 全球购物
Overload和Override的区别
2012/09/02 面试题
师范生个人推荐信
2013/11/29 职场文书
英语自荐信常用语句
2013/12/13 职场文书
区域销售经理职责
2013/12/22 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
学校读书活动总结
2014/06/30 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
升学宴答谢词
2015/01/05 职场文书
处罚决定书范文
2015/06/24 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL