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后台程序与Javascript的两种交互方式
Oct 25 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
Jun 18 PHP
destoon设置自定义搜索的方法
Jun 21 PHP
PHP中使用匿名函数操作数据库的例子
Nov 17 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
ThinkPHP中html:list标签用法分析
Jan 09 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 PHP
php实现的表单验证类完整示例
Aug 13 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
Apr 07 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中与数组相关的函数
2007/03/22 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
js 日期转换成中文格式的函数
2009/07/07 Javascript
用js实现计算加载页面所用的时间
2010/04/02 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
2018/12/03 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
Python实现注册、登录小程序功能
2018/09/21 Python
python新手学习使用库
2020/06/11 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
护士自我鉴定范文
2013/10/06 职场文书
信用卡工资证明范本
2014/10/17 职场文书
收银员岗位职责范本
2015/04/07 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
民事调解协议书
2016/03/21 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android