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 相关文章推荐
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
Oct 09 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
Yii2框架实现数据库常用操作总结
Feb 08 PHP
简单谈谈 php 文件锁
Feb 19 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
PHP实现对数字分隔加千分号的方法
Mar 18 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 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打开文件fopen函数的使用说明
2013/07/05 PHP
网站防止被刷票的一些思路与方法
2015/01/08 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
php出租房数据管理及搜索页面
2017/05/23 PHP
PHP7新功能总结
2019/04/14 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
限制文本字节数js代码
2007/03/06 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
js实现省市级联效果分享
2017/08/10 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
从vue源码看props的用法
2019/01/09 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
NumPy 如何生成多维数组的方法
2018/02/05 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
Django接收自定义http header过程详解
2019/08/23 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
深入了解Python enumerate和zip
2020/07/16 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
编程用JAVA解析XML的方式
2013/07/07 面试题
毕业生求职推荐信
2013/11/04 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
道歉短信大全
2015/05/12 职场文书