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 搜索框提示(自动完成)实例代码
Feb 05 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
php从给定url获取文件扩展名的方法
Mar 14 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
PHP中的一些常用函数收集
May 26 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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操作xml代码
2010/06/17 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
PHP处理JSON字符串key缺少双引号的解决方法
2014/09/16 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
Javascript 日期处理之时区问题
2009/10/08 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
2014/06/16 Javascript
jQuery菜单插件用法实例
2015/07/25 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
wxPython的安装图文教程(Windows)
2017/12/28 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Python 字符串换行的多种方式
2018/09/06 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
python3 实现调用串口功能
2019/12/26 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
如何学习Python time模块
2020/06/03 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
贝佳斯官方网站:Borghese
2020/05/08 全球购物
护理专业自荐信
2013/12/03 职场文书
口头翻译求职人自荐信
2013/12/07 职场文书
我爱我家教学反思
2014/05/01 职场文书
服务标兵事迹材料
2014/05/04 职场文书
公司委托书怎么写
2014/08/02 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
vue实现Toast组件轻提示
2022/04/10 Vue.js