Laravel框架:通过自定义命令创建service服务层初体验

Laravel框架:通过自定义命令创建service服务层初体验

  • 新建命令

    php artisan make:command AddService

    执行该命令,将会在app\Console目录下生成Commands目录,同时在 app\Console\Commands 目录下生成 AddService.php 文件。

  • 创建存根目录及文件
    在app\Console\Commands目录下创建Stubs目录,可以直接右键新建文件夹,或使用命令行 mkdir app\Console\Commands\Stubs 在该目录下添加名为 services.stub 的文件,完整路径为app/Console/Commands/Stubs/services.stub

  • 编辑services.stub并添加内容
    将如下内容添加到services.stub文件中并保存。

    <?php namespace DummyNamespace;class DummyClass {}
  • 编辑AddService.php并添加内容
    将AddService.php内容清空,并使用以下内容完全替换。

    <?phpnamespace App\Console\Commands;use Illuminate\Console\GeneratorCommand;class AddServices extends GeneratorCommand{
    /**
     * 控制台命令名称
     *
     * @var string
     */
    protected $name = 'make:service';
    /**
     * 控制台命令描述
     *
     * @var string
     */
    protected $description = 'Create a new service  class';
    /**
     * 生成类的类型
     *
     * @var string
     */
    protected $type = 'Services';
    /**
     * 获取生成器的存根文件
     *
     * @return string
     */
    protected function getStub()
    {
        return __DIR__.'/Stubs/services.stub';
    }
    
    /**
     * 获取类的默认命名空间
     *
     * @param  string  $rootNamespace
     * @return string
     */
    
    protected function getDefaultNamespace($rootNamespace)
    {
        return $rootNamespace.'\Services';
    }}
  • 注册命令
    将以下内容添加到Kernel.php文件的 protected $commands = [] 属性数组中,使命令生效。

    \App\Console\Commands\AddServices::class
    protected $commands = [
    \App\Console\Commands\AddServices::class];

测试命令(自定义命令)
到这里,自定义命令已经可以使用了,执行 php artisan list 可以看到有 make:service 该命令支持。

  • 执行如下命令进行测试
    php artisan make:service TeachersService
    在app目录下看到有Services目录生成,同时该目录下会生成TeachersService.php文件,详细路径为app\Services\TeachersService.php
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1
颠倒的玉石

这倒是挺方便,以前都是自己创建service

3年前 评论

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