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多线程抓取网页实现代码
Jul 22 PHP
表格展示无限级分类(PHP版)
Aug 21 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
Smarty变量调节器失效的解决办法
Aug 20 PHP
php实现给图片加灰色半透明效果的方法
Oct 20 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
Yii2框架数据验证操作实例详解
May 02 PHP
php post json参数的传递和接收处理方法
May 31 PHP
Laravel中GraphQL接口请求频率实战记录
Sep 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
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
jQuery验证Checkbox是否选中的代码 推荐
2011/09/04 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
AngularJs Javascript MVC 框架
2016/06/20 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
2016/10/10 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
vue添加自定义右键菜单的完整实例
2020/12/08 Vue.js
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
python和c语言哪个更适合初学者
2020/06/22 Python
美国温暖商店:The Warming Store
2018/12/15 全球购物
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
十佳班主任事迹材料
2014/01/18 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
女生节标语
2014/06/26 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
经验交流材料格式
2014/12/30 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
学校党员干部承诺书
2015/05/04 职场文书
教师聘用意向书
2015/05/11 职场文书
恰同学少年观后感
2015/06/08 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书