목차
三、测试Service生成" >三、测试Service生成
PHP 프레임워크 Laravel 서비스 클래스를 생성하는 Laravel의 사용자 정의 Make 명령 소개

서비스 클래스를 생성하는 Laravel의 사용자 정의 Make 명령 소개

May 10, 2021 am 11:34 AM
laravel

다음 튜토리얼 칼럼인 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命令生成目标类。

  1. 运行如下命令

     php artisan make:command MakeService
    로그인 후 복사

    生成Console/Commands/MakeService.php命令文件。

  2. 修改继承类
    把继承类修改成GeneratorCommand,该类的命名空间为IlluminateConsoleGeneratorCommand
    删除实例化方法,handle函数
    实现一个方法getStub

  3. 设置name属性。
    修改$signature属性为name属性,并设置命令:

     protected $name = 'make:service';
    로그인 후 복사
  4. 设置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…

    根据自己的需要修改其他的属性

  5. 设置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 = &#39;make:service&#39;;

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = &#39;生成service对象类&#39;;

    /**
     * The type of class being generated.
     *
     * @var string
     */
    protected $type = &#39;Service&#39;;

    /**
     * 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';
    }}
로그인 후 복사

二、制作Stub文件

我的service文件目前不需要继承或者依赖什么类。所以,相对的比较简单。如果你有特别的需要,可以进行扩展操作。

实例代码如下:

<?phpnamespace DummyNamespace;class DummyClass{
    //}
로그인 후 복사

DummyClassDummyNamespace在继承的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{
    //}
로그인 후 복사

1. 명령어 파일 만들기초기 지식과 관련된 튜토리얼은 제 다른 블로그 Laravel custom Make command를 참고하여 대상 클래스를 생성하세요.

다음 명령🎜rrreee🎜을 실행하여 Console/Commands/MakeService.php 명령 파일을 생성하세요. 🎜
  • 🎜상속된 클래스 수정
    상속된 클래스를 GeneratorCommand로 수정하고 이 클래스의 네임스페이스는 IlluminateConsoleGeneratorCommand입니다.
    인스턴스화 메소드 삭제, 함수 처리
    getStub 메소드 구현. 🎜
  • 🎜 name 속성을 ​​설정하세요.
    $signature 속성을 ​​name 속성으로 수정하고 명령을 설정합니다: 🎜rrreee
  • 🎜Set the type 속성 값<br><code>type 유형 설정, 우리가 생성하는 것은 service이므로 우리가 설정하는 속성은 Service입니다. 🎜rrreee🎜🎜타입 유형은 직접 정의한 것이며 특별한 의미는 없으며 설정할 필요도 없습니다. 🎜🎜🎜type 속성 값은 아래와 같이 오류 생성 시 친숙한 알림만 제공합니다. 🎜rrreee🎜첫 번째는 type 속성을 ​​설정하지 않은 효과이고, 두 번째는 설정 type 속성의 효과가 변경됩니다. 🎜🎜🎜공식적으로 사용되는 유형은 다음과 같습니다: Controller, Middleware, Cast, Channel...🎜🎜🎜필요에 따라 다른 속성을 수정하세요🎜
  • 🎜Stub의 위치와 명령 공간 설정
    Stub 위치는 루트 디렉터리 Stubs/service.stub에 있습니다.
    네임스페이스는 app 디렉토리 아래의 Services에 있습니다. 🎜
  • 🎜예제 코드는 다음과 같습니다. 🎜rrreee🎜🎜🎜 2. 스텁 파일 만들기🎜🎜현재 내 서비스 파일은 어떤 클래스도 상속하거나 의존할 필요가 없습니다. 따라서 비교적 간단합니다. 특별한 요구 사항이 있는 경우 작업을 연장할 수 있습니다. 🎜🎜예제 코드는 다음과 같습니다. 🎜rrreee🎜🎜DummyClassDummyNamespace는 자동으로 생성된 클래스 이름과 설정할 네임스페이스로 자동 대체됩니다. 🎜🎜🎜더 친근한 프롬프트 효과를 얻으려면 편집기의 구문 프롬프트를 사용하는 것이 좋습니다.
    또한 Larave에 내장된 {{ class }}{{ 네임스페이스 }} 쓰기를 사용할 수도 있습니다. 행동 양식. 🎜🎜🎜🎜3. 테스트 서비스 생성🎜🎜다음 명령어를 실행하면🎜rrreee🎜성공적으로 생성될 수 있습니다🎜rrreee🎜생성된 파일의 디렉터리는 app/Services/IndexService.php이고, 생성된 파일은 다음과 같습니다: 🎜rrreee🎜🎜관련 권장 사항: 🎜최신 5개의 Laravel 비디오 튜토리얼🎜🎜🎜

    위 내용은 서비스 클래스를 생성하는 Laravel의 사용자 정의 Make 명령 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    AI Hentai Generator

    AI Hentai Generator

    AI Hentai를 무료로 생성하십시오.

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

    중국어 버전, 사용하기 매우 쉽습니다.

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

    신 수준의 코드 편집 소프트웨어(SublimeText3)

    Laravel - 장인 명령 Laravel - 장인 명령 Aug 27, 2024 am 10:51 AM

    Laravel - Artisan Commands - Laravel 5.7은 새로운 명령을 처리하고 테스트하는 새로운 방법을 제공합니다. 여기에는 장인 명령을 테스트하는 새로운 기능이 포함되어 있으며 데모는 아래에 언급되어 있습니다.

    Laravel - 장인 콘솔 Laravel - 장인 콘솔 Aug 27, 2024 am 10:51 AM

    Laravel - Artisan Console - Laravel 프레임워크는 명령줄을 통한 상호 작용을 위한 세 가지 기본 도구인 Artisan, Ticker 및 REPL을 제공합니다. 이번 장에서는 Artisan에 대해 자세히 설명합니다.

    Laravel - 페이지 매김 사용자 정의 Laravel - 페이지 매김 사용자 정의 Aug 27, 2024 am 10:51 AM

    Laravel - 페이지 매김 사용자 정의 - Laravel에는 사용자나 개발자가 페이지 매김 기능을 포함하는 데 도움이 되는 페이지 매김 기능이 포함되어 있습니다. Laravel 페이지네이터는 쿼리 빌더 및 Eloquent ORM과 통합되어 있습니다. 자동 페이지 매김 방법

    Laravel에서 이메일 전송이 실패 할 때 반환 코드를 얻는 방법은 무엇입니까? Laravel에서 이메일 전송이 실패 할 때 반환 코드를 얻는 방법은 무엇입니까? Apr 01, 2025 pm 02:45 PM

    Laravel 이메일 전송이 실패 할 때 반환 코드를 얻는 방법. Laravel을 사용하여 응용 프로그램을 개발할 때 종종 확인 코드를 보내야하는 상황이 발생합니다. 그리고 실제로 ...

    laravel 일정 작업이 실행되지 않습니다 : 스케줄 후 작업이 실행되지 않으면 어떻게해야합니까? laravel 일정 작업이 실행되지 않습니다 : 스케줄 후 작업이 실행되지 않으면 어떻게해야합니까? Mar 31, 2025 pm 11:24 PM

    laravel 일정 작업 실행 비 응답 문제 해결 Laravel의 일정 작업 일정을 사용할 때 많은 개발자 가이 문제에 직면합니다 : 스케줄 : 실행 ...

    Laravel에서는 이메일로 확인 코드를 보내지 못하는 상황을 처리하는 방법은 무엇입니까? Laravel에서는 이메일로 확인 코드를 보내지 못하는 상황을 처리하는 방법은 무엇입니까? Mar 31, 2025 pm 11:48 PM

    Laravel의 이메일을 처리하지 않는 방법은 LaRavel을 사용하는 것입니다.

    DCAT 관리자에서 데이터를 추가하기 위해 클릭하는 사용자 정의 테이블 기능을 구현하는 방법은 무엇입니까? DCAT 관리자에서 데이터를 추가하기 위해 클릭하는 사용자 정의 테이블 기능을 구현하는 방법은 무엇입니까? Apr 01, 2025 am 07:09 AM

    DCAT를 사용할 때 DCATADMIN (LARAVEL-ADMIN)에서 데이터를 추가하려면 사용자 정의의 테이블 기능을 구현하는 방법 ...

    Laravel - 덤프 서버 Laravel - 덤프 서버 Aug 27, 2024 am 10:51 AM

    Laravel - 덤프 서버 - Laravel 덤프 서버는 Laravel 5.7 버전과 함께 제공됩니다. 이전 버전에는 덤프 서버가 포함되어 있지 않습니다. 덤프 서버는 laravel/laravel 작곡가 파일의 개발 종속성이 됩니다.

    See all articles