


Einführung des benutzerdefinierten Make-Befehls von Laravel zum Generieren einer Service-Klasse
In der folgenden Tutorial-Kolumne von laravel wird der benutzerdefinierte Make-Befehl von Laravel zum Generieren einer Service-Klasse vorgestellt. Ich hoffe, dass er Freunden in Not hilfreich sein wird!
Umgebungsbeschreibung
Die von mir verwendete Umgebung ist: 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
Nach dem Login kopieren生成
Console/Commands/MakeService.php
命令文件。 修改继承类
把继承类修改成GeneratorCommand
,该类的命名空间为IlluminateConsoleGeneratorCommand
。
删除实例化方法,handle函数
实现一个方法getStub
。-
设置
name
属性。
修改$signature
属性为name
属性,并设置命令:protected $name = 'make:service';
Nach dem Login kopieren -
设置
type
属性值type
类型设置,我们生成的是service
,所以我们设置的属性就是Service
。protected $type = 'Service';
Nach dem Login kopierentype类型是自己去定义的,本身没有特殊含义,可以不用设置。
type属性值仅仅在创建错误的时候,给你一个友好的提示,如下所示:
C:\www\wwwroot\laravel8>php artisan make:service TestService already exists! C:\www\wwwroot\laravel8>php artisan make:service TestService Service already exists!
Nach dem Login kopieren第一个是没有设置
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'; }}
二、制作Stub文件
我的service文件目前不需要继承或者依赖什么类。所以,相对的比较简单。如果你有特别的需要,可以进行扩展操作。
实例代码如下:
<?phpnamespace DummyNamespace;class DummyClass{ //}
DummyClass
和DummyNamespace
在继承的GeneratorCommand
类内部会被自动替换成自动生成的类名和设置的命名空间。
建议这种写法,可以使用编辑器的语法提示,获得更友好的提示效果。
另外,你也可以使用Larave
内置的{{ class }}
和{{ namespace }}
写法。
三、测试Service生成
执行以下命令
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{ //}
Führen Sie den folgenden Befehl aus🎜rrreee🎜, um die Befehlsdatei1. Befehlsdateien erstellenTutorials zu frühen Kenntnissen finden Sie in meinem anderen Laravel-Blog „Custom Make Command to Generating Target Classes“.
Console/Commands/MakeService.php
zu generieren. 🎜Ändern Sie die geerbte Klasse in
GeneratorCommand
, und der Namespace dieser Klasse ist IlluminateConsoleGeneratorCommand
. Löschen Sie die Instanziierungsmethode und verarbeiten Sie die Funktion.
Implementieren Sie eine Methode
getStub
. 🎜name
fest. Ändern Sie das Attribut
$signatur
in das Attribut name
und legen Sie den Befehl fest: 🎜rrreeeTyp Attributwert<br><code>type
Typeinstellung, was wir generieren, ist service
, also ist das von uns festgelegte Attribut Service
. 🎜rrreee🎜🎜Der Typtyp wird von Ihnen selbst definiert. Er hat keine besondere Bedeutung und muss nicht festgelegt werden. 🎜🎜🎜Der Typ-Attributwert gibt Ihnen nur eine freundliche Erinnerung, wenn Sie einen Fehler erstellen, wie unten gezeigt: 🎜rrreee🎜Der erste ist die Auswirkung, wenn das type
-Attribut nicht gesetzt wird, und der zweite ist Wenn Sie es festlegen, wird die Wirkung des Attributs type
geändert. 🎜🎜🎜Die offiziell verwendeten Typen sind: Controller, Middleware, Cast, Channel...🎜🎜🎜Ändern Sie andere Eigenschaften entsprechend Ihren eigenen Anforderungen🎜
Stub Der Speicherort befindet sich im Stammverzeichnis
Stubs/service.stub
. Der Namespace befindet sich in
Services
im Verzeichnis app
. 🎜DummyClass
und DummyNamespace
werden automatisch durch automatisch generierte Klassennamen und den festzulegenden Namespace ersetzt. 🎜🎜🎜Es wird empfohlen, die Syntax-Eingabeaufforderungen des Editors zu verwenden, um einen benutzerfreundlicheren Eingabeaufforderungseffekt zu erzielen. Darüber hinaus können Sie auch die integrierten
{{ class }}
- und {{ namespace }}
-Schreibvorgänge von Larave
verwenden Methoden. 🎜🎜🎜🎜3. Testen Sie die Dienstgenerierung. Führen Sie den folgenden Befehl aus Die generierte Datei lautet wie folgt: 🎜rrreee🎜🎜Verwandte Empfehlungen: 🎜Die neuesten fünf Laravel-Video-Tutorials🎜🎜🎜Das obige ist der detaillierte Inhalt vonEinführung des benutzerdefinierten Make-Befehls von Laravel zum Generieren einer Service-Klasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Datenbankoperationen in PHP werden durch ORM vereinfacht, das Objekte in relationalen Datenbanken abbildet. EloquentORM in Laravel ermöglicht Ihnen die Interaktion mit der Datenbank mithilfe einer objektorientierten Syntax. Sie können ORM verwenden, indem Sie Modellklassen definieren, Eloquent-Methoden verwenden oder in der Praxis ein Blog-System erstellen.

Die neuesten Versionen von Laravel 9 und CodeIgniter 4 bieten aktualisierte Funktionen und Verbesserungen. Laravel9 übernimmt die MVC-Architektur und bietet Funktionen wie Datenbankmigration, Authentifizierung und Template-Engine. CodeIgniter4 nutzt die HMVC-Architektur, um Routing, ORM und Caching bereitzustellen. In Bezug auf die Leistung sorgen das auf Dienstanbietern basierende Designmuster von Laravel9 und das leichte Framework von CodeIgniter4 für eine hervorragende Leistung. In praktischen Anwendungen eignet sich Laravel9 für komplexe Projekte, die Flexibilität und leistungsstarke Funktionen erfordern, während CodeIgniter4 für schnelle Entwicklung und kleine Anwendungen geeignet ist.

Laravel – Artisan Commands – Laravel 5.7 bietet eine neue Möglichkeit, neue Befehle zu behandeln und zu testen. Es enthält eine neue Funktion zum Testen von Handwerkerbefehlen und die Demonstration wird unten erwähnt?

Vergleichen Sie die Datenverarbeitungsfunktionen von Laravel und CodeIgniter: ORM: Laravel verwendet EloquentORM, das eine relationale Klassen-Objekt-Zuordnung bereitstellt, während CodeIgniter ActiveRecord verwendet, um das Datenbankmodell als Unterklasse von PHP-Klassen darzustellen. Abfrage-Builder: Laravel verfügt über eine flexible verkettete Abfrage-API, während der Abfrage-Builder von CodeIgniter einfacher und Array-basiert ist. Datenvalidierung: Laravel bietet eine Validator-Klasse, die benutzerdefinierte Validierungsregeln unterstützt, während CodeIgniter über weniger integrierte Validierungsfunktionen verfügt und eine manuelle Codierung benutzerdefinierter Regeln erfordert. Praxisfall: Beispiel einer Benutzerregistrierung zeigt Lar

Für Anfänger bietet CodeIgniter eine sanftere Lernkurve und weniger Funktionen, deckt aber die Grundbedürfnisse ab. Laravel bietet einen größeren Funktionsumfang, weist jedoch eine etwas steilere Lernkurve auf. In Bezug auf die Leistung schneiden sowohl Laravel als auch CodeIgniter gut ab. Laravel verfügt über eine umfangreichere Dokumentation und aktive Community-Unterstützung, während CodeIgniter einfacher und leichtgewichtiger ist und über starke Sicherheitsfunktionen verfügt. Im praktischen Fall der Erstellung einer Blogging-Anwendung vereinfacht EloquentORM von Laravel die Datenmanipulation, während CodeIgniter mehr manuelle Konfiguration erfordert.

Bei der Auswahl eines Frameworks für große Projekte haben Laravel und CodeIgniter jeweils ihre eigenen Vorteile. Laravel ist für Anwendungen auf Unternehmensebene konzipiert und bietet modularen Aufbau, Abhängigkeitsinjektion und einen leistungsstarken Funktionsumfang. CodeIgniter ist ein leichtes Framework, das sich eher für kleine bis mittelgroße Projekte eignet und Wert auf Geschwindigkeit und Benutzerfreundlichkeit legt. Für große Projekte mit komplexen Anforderungen und einer großen Anzahl von Benutzern sind die Leistung und Skalierbarkeit von Laravel besser geeignet. Für einfache Projekte oder Situationen mit begrenzten Ressourcen sind die leichten und schnellen Entwicklungsfunktionen von CodeIgniter idealer.

Leitfaden zum Testen von PHP-Einheiten und -Integrationen Unit-Tests: Konzentrieren Sie sich auf eine einzelne Code- oder Funktionseinheit und verwenden Sie PHPUnit, um Testfallklassen zur Überprüfung zu erstellen. Integrationstests: Achten Sie darauf, wie mehrere Codeeinheiten zusammenarbeiten, und verwenden Sie die Methoden setUp() und TearDown() von PHPUnit, um die Testumgebung einzurichten und zu bereinigen. Praktischer Fall: Verwenden Sie PHPUnit, um Unit- und Integrationstests in Laravel-Anwendungen durchzuführen, einschließlich der Erstellung von Datenbanken, dem Starten von Servern und dem Schreiben von Testcode.

Für kleine Projekte eignet sich Laravel, für größere Projekte, die starke Funktionalität und Sicherheit erfordern. CodeIgniter eignet sich für sehr kleine Projekte, die geringes Gewicht und Benutzerfreundlichkeit erfordern.
