宁泽林_NiZerin - 互联网技术博客

  • PHP
  • Go
  • Java
  • Rust
  • Python
  • 交流群
  • 关于我
  • 留言版
  1. 首页
  2. Laravel
  3. 正文

[译] 如何在 Laravel 5.8 中自定义 Artisan 命令

2019年4月8日 2437点热度 0人点赞 0条评论

介绍

Laravel 打包了许多命令,以帮助开发人员加快开发流程。其中包括一些 php artisan serve , php artisan:make model 等。

在我的 Laravel 项目中,我使用一种结构来帮助我将不同的层和逻辑彼此分开。

用我技术主管的话说,“你的控制器应该尽可能少地工作”。

所以在我的大多数项目中,创建了所有逻辑的服务类和处理数据库的所有连接的存储库类。

所以简单来说,如果需要任何逻辑则控制器调用服务类,如果需要连接数据库则服务类调用存储库。

不管怎样,在我目前的项目中,我决定编写一个命令来帮助我生成服务类和存储类来加速我的工作速度。

新建命令

首先,你必须了解 Laravel 使用 stub 文件作为模版,并替换模版内的令牌来生成自定义类或者文件。

现在让我们来新建一个自定义的命令

1. 新建命令

执行:

$ php artisan make:command AddService

此命令将在 app\Console\Commands 目录下生成 AddService.php 文件。

在命令执行的同时,AddService 文件生成在 Commands 目录。

2. 存根文件

创建一个 dummy 存根文件,命名为 services.stub,放在 app/Console/Commands/Stubs/**service.stub** 目录下。

服务存根创建完毕。

3. services.stub

将以下内容添加至 services.stub 文件中

<?php
namespace DummyNamespace;
class DummyClass
{
}

4. 编辑命令

现在在 commands 文件夹目录下打开 AddService.php 文件,并替换以下内容

<?php
namespace 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';
    }
}

5. 进行测试

现在我们可以执行 php artisan make:service TeachersService 命令来新建一个服务 \ 此命令会在 Service 目录下新建一个 TeacherService.php 类。

6. artisan 列表

你也可以执行 php artisan list 命令,将发现你的命令也列出来了。

原文地址:https://medium.com/@mercyware/making-a-c...

译文地址:https://learnku.com/laravel/t/26703

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: laravel php translations
最后更新:2019年4月8日

NiZerin

博主已经躺平了,后面很少会更新博客。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

分类
  • Angular
  • CSS3
  • docker
  • Flutter
  • git
  • Go
  • H5
  • Java
  • JavaScript
  • Laravel
  • linux
  • Node.js
  • PHP
  • Python
  • React
  • redis
  • Vue.js
  • windows
  • WordPress
  • 交流
  • 小程序
  • 工具
  • 网站公告
标签聚合
php wordpress flutter javascript translations vue go laravel
友情链接
  • PHP函数字典
  • 宝塔运维特惠
  • 科学上网
  • 阿里云特惠

COPYRIGHT © 2021 nizer.in. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang