다음 튜토리얼 칼럼인 laravel에서는 서비스 클래스를 생성하는 Laravel의 사용자 정의 Make 명령을 소개합니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
제가 사용하는 환경은 Laravel Framework 8.40.0
입니다. Laravel Framework 8.40.0
。
C:\www\wwwroot\laravel8>php artisan --version Laravel Framework 8.40.0
前期知识的相关制作的教程,请参考我的另一篇博客Laravel自定义Make命令生成目标类。
运行如下命令
php artisan make:command MakeService
生成Console/Commands/MakeService.php
命令文件。
修改继承类
把继承类修改成GeneratorCommand
,该类的命名空间为IlluminateConsoleGeneratorCommand
。
删除实例化方法,handle函数
实现一个方法getStub
。
设置name
属性。
修改$signature
属性为name
属性,并设置命令:
protected $name = 'make:service';
设置type
属性值type
类型设置,我们生成的是service
,所以我们设置的属性就是Service
。
protected $type = 'Service';
type类型是自己去定义的,本身没有特殊含义,可以不用设置。
type属性值仅仅在创建错误的时候,给你一个友好的提示,如下所示:
C:\www\wwwroot\laravel8>php artisan make:service TestService already exists! C:\www\wwwroot\laravel8>php artisan make:service TestService Service already exists!
第一个是没有设置type
属性的效果,第二个是设置了type
属性的效果。
官方使用的type有:Controller,Middleware,Cast,Channel…
根据自己的需要修改其他的属性
设置Stub的位置和命令空间
Stub的位置是在根目录下Stubs/service.stub
里面。
命名空间在app
目录下Services
里面。
实例代码如下:
<?php namespace App\Console\Commands; use Illuminate\Console\GeneratorCommand; class MakeService extends GeneratorCommand{ /** * The console command name. * * @var string */ protected $name = 'make:service'; /** * The console command description. * * @var string */ protected $description = '生成service对象类'; /** * The type of class being generated. * * @var string */ protected $type = 'Service'; /** * Get the stub file for the generator. * * @return string */ protected function getStub() { // Implement getStub() method. return $this->laravel->basePath('/stubs/service.stub'); } /** * Get the default namespace for the class. * * @param string $rootNamespace * @return string */ protected function getDefaultNamespace($rootNamespace) { return $rootNamespace.'\Services'; }}
我的service文件目前不需要继承或者依赖什么类。所以,相对的比较简单。如果你有特别的需要,可以进行扩展操作。
实例代码如下:
<?phpnamespace DummyNamespace;class DummyClass{ //}
DummyClass
和DummyNamespace
在继承的GeneratorCommand
类内部会被自动替换成自动生成的类名和设置的命名空间。
建议这种写法,可以使用编辑器的语法提示,获得更友好的提示效果。
另外,你也可以使用Larave
内置的{{ class }}
和{{ namespace }}
写法。
执行以下命令
php artisan make:service IndexService
能正常生成成功
C:\www\wwwroot\laravel8>php artisan make:service IndexService Service created successfully.
生成的文件的目录是app/Services/IndexService.php
<?php namespace App\Services; class IndexService{ //}
다음 명령🎜rrreee🎜을 실행하여1. 명령어 파일 만들기초기 지식과 관련된 튜토리얼은 제 다른 블로그 Laravel custom Make command를 참고하여 대상 클래스를 생성하세요.
Console/Commands/MakeService.php
명령 파일을 생성하세요. 🎜GeneratorCommand
로 수정하고 이 클래스의 네임스페이스는 IlluminateConsoleGeneratorCommand
입니다. getStub
메소드 구현. 🎜name
속성을 설정하세요. $signature
속성을 name
속성으로 수정하고 명령을 설정합니다: 🎜rrreeetype 속성 값<br><code>type
유형 설정, 우리가 생성하는 것은 service
이므로 우리가 설정하는 속성은 Service
입니다. 🎜rrreee🎜🎜타입 유형은 직접 정의한 것이며 특별한 의미는 없으며 설정할 필요도 없습니다. 🎜🎜🎜type 속성 값은 아래와 같이 오류 생성 시 친숙한 알림만 제공합니다. 🎜rrreee🎜첫 번째는 type
속성을 설정하지 않은 효과이고, 두 번째는 설정 type
속성의 효과가 변경됩니다. 🎜🎜🎜공식적으로 사용되는 유형은 다음과 같습니다: Controller, Middleware, Cast, Channel...🎜🎜🎜필요에 따라 다른 속성을 수정하세요🎜
Stubs/service.stub
에 있습니다. app
디렉토리 아래의 Services
에 있습니다. 🎜DummyClass
및 DummyNamespace
는 자동으로 생성된 클래스 이름과 설정할 네임스페이스로 자동 대체됩니다. 🎜🎜🎜더 친근한 프롬프트 효과를 얻으려면 편집기의 구문 프롬프트를 사용하는 것이 좋습니다. Larave
에 내장된 {{ class }}
및 {{ 네임스페이스 }}
쓰기를 사용할 수도 있습니다. 행동 양식. 🎜🎜🎜🎜3. 테스트 서비스 생성🎜🎜다음 명령어를 실행하면🎜rrreee🎜성공적으로 생성될 수 있습니다🎜rrreee🎜생성된 파일의 디렉터리는 app/Services/IndexService.php
이고, 생성된 파일은 다음과 같습니다: 🎜rrreee🎜🎜관련 권장 사항: 🎜최신 5개의 Laravel 비디오 튜토리얼🎜🎜🎜위 내용은 서비스 클래스를 생성하는 Laravel의 사용자 정의 Make 명령 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!