最适合入门的Laravel初级教程(四)控制器Controller

路由可以分发请求;
路由中还可以引入 html 页面;
我们可以在 route/web.php 中搞定一切了;
但是如果把业务逻辑都写入到路由中;
那路由将庞大的难以维护;
于是控制器就有了很明显的存在价值;
把业务逻辑写在控制器中;
路由只负责转发请求到指定的控制器即可;

ok;那我们开始创建控制器;
啥?你要手动创建文件?
no;既然用上了现代话框架;
必须得用有点逼格的方式干这苦力活了;

好了;下面插播一段 artisan 的内容;
laravel 是一个现代话框架;
它对命令行有着非常好的支持;
artisan 就是 laravel 的命令行接口;
就是根目录下的 artisan 文件;
laravel artisan
我们可以把它理解为命令行级的单入口文件;
跟 index.php 文件的使命一样;
所有的命令行都从它这走;
所以如果想使用命令行;
就需要 cd 到项目的根目录下;
或者手动指定一长串路径;
啥?还有人问什么 cd ?
好吧;还好我有扫盲文章 插播一篇windows下git bash命令行使用的文章
起手式就是 php artisan
在命令行中以 php 开头意思是用 php 来执行某个文件;
php index.php 意思就是使用 php 的命令行模式运行 index.php ;
命令行下是可以不需要文件后缀就能识别的;
所以根目录下的 artisan 文件并没有带上 .php ;

命令行主要有两个方向的应用;
第一是生成文件;
第二是执行任务;
我们马上就要用它生成控制器文件;

php artisan make:controller ArticleController

如果人品正常;
那么会生成一个 app/Http/Controllers/ArticleController.php 文件;
打开是这个样子的;

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ArticleController extends Controller
{
    //
}

不但自动创建了文件;
而且还定义好了命名空间;
继承好了父级控制器;
我们直接写增删改查的方法就可以了;

ok;说干就干吧;
啥?你要手动写方法?
no;既然用上了现代话框架;
必须得用有点逼格的方式干这苦力活了;
来给上面的命令行加个--resource选项;

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)
    {
        //
    }
}

怎么样?
惊不惊喜?
开不开心?
有木有被惊die了
不但增删改查的方法都定义好了;
连注释都给写好了;

这其实是按 RESTful 规范生成的格式;
除了 GET POST 它还包含了一大堆请求方式;
PUT 、 PATCH 、 DELETE 、HEAD 、OPTIONS;
也就是说 Route:: 后面还可以跟上面这些方法;

Route::put('article', function () {
    return view('article');
});
// ...

RESTful 是本篇文章的一个扩展题;
童鞋们可以搜索了解下;
如果被概念搞的有点懵;
没关系;
留给以后慢慢搞;
现在咱只用 GET POST 足够学习了;

ok;我们开始在方法中写业务逻辑吧;
啥?你要手动写代码?
废话;不然用脚动写?
别看了;
下面没惊喜了;

白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共9条评论
白俊遥博客

:社会了。

2018-06-21 11:51:09 回复

白俊遥博客

大海:谢谢大佬

2018-05-28 17:08:22 回复

白俊遥博客

点杠:白大侠,请问Laravel里类似ThinkPHP的$this->success() 和$this->error()该怎么写

2018-03-25 20:21:14 回复

白俊遥博客

████████████白俊遥博客最后几句笑出声

2018-03-07 22:37:18 回复

白俊遥博客

rk:博主,读到此,不得不评论一下了。终于明白“优雅”的意思是工匠帮你完成那些手工编程的苦逼活,也就是博主说的现代化的Laravel要逼格高一点,装装逼,让童鞋们吃惊到傻眼。事实上,这就好比DW自动生成代码……那些年前端工程师不懂编程就可视化做网页一样;或者更Django映射生成控制器一样,只见黑客般代码一行行自动在黑屏幕上翻滚,逼格都高得受不了……

2018-02-03 17:12:17 回复

白俊遥博客 白俊遥博客
  • 云淡风晴 回复 rk:你看到了优雅的表面;深入使用可得其精髓;
  • 2018-02-05 00:27:54 回复
白俊遥博客

蓝图:学习了,刚加入了帅白的技术群

2018-01-26 12:24:58 回复

白俊遥博客 白俊遥博客
  • 云淡风晴 回复 蓝图:多谢支持;
  • 2018-02-05 00:28:02 回复
白俊遥博客

luke:666 赞一个 学习了

2018-01-06 17:22:03 回复

白俊遥博客

北丰:很皮的程序员,语言秀的飞起啊

2018-01-03 10:22:09 回复

白俊遥博客

师丨爷:签到

2017-12-31 11:34:12 回复