Laravel 框架控制器 Controller原理与用法实例分析
本文实例讲述了laravel 框架控制器 controller原理与用法。分享给大家供大家参考,具体如下:
一、控制器存在的意义
路由可以分发请求;
路由中还可以引入 html 页面;
我们可以在 route/web.php 中搞定一切了;
但是如果把业务逻辑都写入到路由中;
那路由将庞大的难以维护;
于是控制器就有了很明显的存在价值;
把业务逻辑写在控制器中;
路由只负责转发请求到指定的控制器即可;
二、创建控制器
我们可以直接使用 laravel 内置的命令生成很多代码,例如控制器;
artisan 就是 laravel 的命令行接口;
就是根目录下的 artisan 文件;
下面来使用命令创建一个控制器
php artisan make:controller articlecontroller
运行完成后会生成一个 app/http/controllers/articlecontroller.php 文件
接下来就需要在新创建的控制器中写各种方法,但是,只要在刚刚的命令中加入一个参数就可以自动生成一些方法
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 文件;
我们可以把它理解为命令行级的单入口文件;
跟 index.php 文件的使命一样;
所有的命令行都从它这走;
所以如果想使用命令行;
就需要 cd 到项目的根目录下;
或者手动指定一长串路径;
在命令行中以 php 开头意思是用 php 来执行某个文件;php index.php
意思就是使用 php 的命令行模式运行 index.php ;
命令行下是可以不需要文件后缀就能识别的;
你可以创建个 test 的文本文件,然后在里面写一些php代码,使用命令行 php test 也是可以正常运行的;
所以根目录下的 artisan 文件并没有带上 .php ;
命令行主要有两个方向的应用;
第一是生成文件;
第二是执行任务;
四、路由绑定控制器方法
在上面生成的控制器方法 index 中写入如下代码
然后写一个路由绑定这个控制器方法,在 routes/web.php 中添加如下代码
route::get('article/index', 'articlecontroller@index');
打开链接
http://127.0.0.1:8000/article/index