laravel 学习之路 控制器Controller

  • 2019 年 12 月 19 日
  • 笔记

前面学习了路由可以分发请求还可以引入html页面,这些都可以在 route/web.php 中搞定。

但是如果项目设计的业务很繁杂,都写在路由里会非常臃肿难以维护,于是今天的主角 Controller 控制器的价值就很明显了,把业务逻辑写在控制器中,路由只负责转发请求到控制器。

创建控制器

都9102年了既然用上了现代话框架必须玩点高逼格的方式使用命令行的方式创建控制器

  • laravel 是一个现代化框架,它对命令行有着非常好的支持,artisan 就是 laravel 的命令行接口
  • 我们可以把它理解为命令行级的单入口文件,跟 index.php 文件的使命一样,所有命令都需要通过他,所有如果需要使用命令行就需要 cd 到项目根目录去或者指定一长串路径这个看个人喜好了up是喜好到根目录去。
  • 使用很简单 php artisan 起手 后面跟上响应的命令,在命令行中以 php 开头意思是用 php 来执行某个文件,php index.php 意思就是使用 php 的命令行模式运行 index.php
  • 命令行下是可以不需要文件后缀就能识别的所以根目录下的 artisan 文件并没有带上 .php

好了让我们用 php artisan 来创建控制器在项目根目录执行下列代码 php artisan make:controller TestController

如果最近没做坏事,洗过脸的话会看到成功的提示

并会生成一个 app/Http/Controllers/TestController.php 文件,打开是这个样子
<?php    namespace AppHttpControllers;    use IlluminateHttpRequest;    class TestController extends Controller  {      //  }

不但自动创建了文件还定义了命名空间并且继承好了父级控制器,这样我们直接写CURD就好了

接下来我们给上面的命令加个 –resource 选项 php artisan make:controller TestController --resource 如果直接运行的话是会报错提示Controller already exists!

这是因为我们刚已经创建过 TestController了,所以我们需要进入项目根目录执行下面的命令把刚刚创建的文件删除掉 cd app/Http/Controllers/ && rm -rf TestController.php 删除掉后再回到项目根目录执行刚刚的命令

如果人品正常,那么会再次生成一个 app/Http/Controllers/TestController.php 文件,打开会是这个样子

<?php    namespace AppHttpControllers;    use IlluminateHttpRequest;    class TestController extends Controller  {      /**       * Display a listing of the resource.       *       * @return IlluminateHttpResponse       */      public function index()      {          //      }        /**       * Show the form for creating a new resource.       *       * @return IlluminateHttpResponse       */      public function create()      {          //      }        /**       * Store a newly created resource in storage.       *       * @param  IlluminateHttpRequest  $request       * @return IlluminateHttpResponse       */      public function store(Request $request)      {          //      }        /**       * Display the specified resource.       *       * @param  int  $id       * @return IlluminateHttpResponse       */      public function show($id)      {          //      }        /**       * Show the form for editing the specified resource.       *       * @param  int  $id       * @return IlluminateHttpResponse       */      public function edit($id)      {          //      }        /**       * Update the specified resource in storage.       *       * @param  IlluminateHttpRequest  $request       * @param  int  $id       * @return IlluminateHttpResponse       */      public function update(Request $request, $id)      {          //      }        /**       * Remove the specified resource from storage.       *       * @param  int  $id       * @return IlluminateHttpResponse       */      public function destroy($id)      {          //      }  }

怎么样逼格高吧,不但增删改查的方法都定义好了,连注释都写好了,这其实是按 RESTful 规范生成的格式。