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 相关文章推荐
杏林同学录(二)
Oct 09 PHP
snoopy PHP版的网络客户端提供本地下载
Apr 15 PHP
PHP 日期加减的类,很不错
Oct 10 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
php中mysql操作buffer用法详解
Mar 19 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
PHP代码加密的方法总结
Mar 13 PHP
php生成短网址/短链接原理和用法实例分析
May 29 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
自动分页的不完整解决方案
2007/01/12 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
javaScript复制功能调用实现方案
2012/12/13 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
2019/11/01 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
详解python中__name__的意义以及作用
2019/08/07 Python
python实现微信打飞机游戏
2020/03/24 Python
浅析python中的del用法
2020/09/02 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
巴西一家专门从事家居和装饰的连锁店:Camicado
2019/08/14 全球购物
迟到检讨书800字
2014/01/13 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
银行安全保卫工作总结
2015/08/10 职场文书