最适合入门的 Laravel 入门教程 (四)

路由可以分发请求;
路由中还可以引入 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;我们开始在方法中写业务逻辑吧;
啥?你要手动写代码?
废话;不然用脚动写?
别看了;
下面没惊喜了;

本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客 https://baijunyao.com

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!