Laravel Artisan 自定义创建service命令

1 篇文章 0 订阅
1 篇文章 0 订阅

Laravel Artisan 自定义创建service命令

注:不限于service,自定义创建文件命令

  • 场景

    改造laravel框架,增加service层

  • 以vendor\laravel\framework\src\Illuminate\Foundation\Console\CastMakeCommand.php文件为例

    <?php
    
    namespace Illuminate\Foundation\Console;
    
    use Illuminate\Console\GeneratorCommand;
    
    # 文件继承GeneratorCommand
    class CastMakeCommand extends GeneratorCommand
    {
        /**
         * 控制台展示名称
         *
         * @var string
         */
        protected $name = 'make:cast';
    
        /**
         * 命令说明
         *
         * @var string
         */
        protected $description = 'Create a new custom Eloquent cast class';
    
        /**
         * The type of class being generated.
         *
         * @var string
         */
        protected $type = 'Cast';
    
        /**
         * 获取生成器存根文件
         *
         * @return string
         */
        protected function getStub()
        {
            return $this->resolveStubPath('/stubs/cast.stub');
        }
    
        /**
         * 解析到存根的完全限定路径
         *
         * @param  string  $stub
         * @return string
         */
        protected function resolveStubPath($stub)
        {
            return file_exists($customPath = $this->laravel->basePath(trim($stub, '/')))
                ? $customPath
                : __DIR__.$stub;
        }
    
        /**
         * 获取类的默认名称空间
         *
         * @param  string  $rootNamespace
         * @return string
         */
        protected function getDefaultNamespace($rootNamespace)
        {
            return $rootNamespace.'\Casts';
        }
    }
    
    
  • 开始创建service

    • 创建command文件

      php artisan make:command ServiceMakeCommand
      
    • 修改ServiceMakeCommand文件继承GeneratorCommand类

      class ServiceMakeCommand extends GeneratorCommand
      
    • 修改命令行执行名称:$signature

      $signature = 'make:service'
      
    • 修改命令描述

      $description = '创建service'
      
    • 设置生成类的类型

      $type = 'Service';
      
    • 设置类的默认命名空间

      protected function getDefaultNamespace($rootNamespace)
      {
        return $rootNamespace.'\Services';
      }
      
    • 创建生成模板,在app\Console\Commands\下创建一个命令模板目录stubs,设置stub模板文件位置

      <?php
      
      namespace {{ namespace }};
      
      
      class {{ class }}
      {
          public function index()
          {
              //
          }
      }
      
      # 获取生成器模板文件
      protected function getStub()
      {
      	return $this->resolveStubPath('/stubs/service.stub');
      }
      
    • 运行php artisan查看

      # 命令已经产生
      make:service          创建service
      
    • 创建服务

      root@4015e6d872b9:/home/www/laravel-basics# php artisan make:service UserService
      Service created successfully.
      

完成了!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值