Heim >Backend-Entwicklung >PHP-Tutorial >Lassen Sie uns basierend auf PHP Laravel über Möglichkeiten sprechen, weniger „schlechten' PHP-Code zu schreiben! !
Dieser Artikel gibt Ihnen eine detaillierte Einführung, wie Sie weniger „schlechten“ PHP-Code schreiben können! ! Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Geschrieben für Kinder, die neugeborene Kälber sind und keine Angst vor Tigern haben, Sie können es nach Belieben lesen Dieses Kapitel basiert auf PHP Laravel
Menschen fragen oft
Ich schreibe auch über „schlechte“ Projekte. Das Folgende basiert auf der Zusammenfassung von Artikeln und persönlichen Entwicklungserfahrungen großer Internet-Experten.
Controller Wie der Name schon sagt, handelt es sich um einen Controller. Wenn Sie mit PHP beginnen, wissen Sie, dass der Controller die C-Schicht in MVC selbst darstellt und Ihnen beibringt, wie man Geschäfte trennt Kontinuierliche Weiterentwicklung des Geschäfts, die Komplexität des Codes Es verbessert sich auch und die Verknüpfungen zwischen den Funktionen werden komplizierter. Am Ende wird Ihr MVC zum Bild unten, sodass Sie das wachsende Geschäft nicht mehr unterstützen können, wenn Sie sich ausschließlich auf die Designideen von MVC verlassen.
Jetzt definieren wir die Aufgaben und Fähigkeiten des Controllers neu, was dem SOLID-Einzelfunktionsprinzip entspricht.
Das direkte Schreiben von Geschäftscode in den Controller führt dazu, dass der Code aufgebläht wird einfach zu warten und zu erweitern
<?php namespace App\Http\Controller; class UserController extends Controller{ public function register(Request $request){ $user = new User(); $user->username = $request->input('username'); $user->password = $request->input('password'); $result = $user->save(); return $result; } }
Zu diesem Zeitpunkt sollten wir darüber nachdenken, wie wir den Geschäftscode trennen können. Wir führen das Konzept des Dienstes ein Methoden in Service
<?php namespace App\Http\Controller; class UserController extends Controller{ public $request; protected $userService; public function __construct(Request $request, UserService $userService) { $this->request = $request; $this->userService = $userService; } public function register() { //... validation return $this->userService->register ($this->request->all()); } }
UserService
<?php namespace App\Service; class UserService{ public function register($data) { $username = $data['username']; $password = $data['password']; $password = encrypt ($password); $user = new User(); $user->username = $username; $user->password = $password; $result = $user->save(); return $result; } }Bis jetzt haben wir das Geschäft zumindest vollständig von der Anfrage getrennt. Aber es ist immer noch unbefriedigend, wenn alle Geschäfte und CURD in Service geschrieben werden, wird nur die Aufblähung des Controllers auf Service übertragen, und dann hat Service keine Bedeutung mehr. Daher müssen wir den Dienst weiterhin aufteilen und die R-Operationen der Datenbank trennen, da die Operationen von CUD grundsätzlich gleich sind, während die R-Operationen je nach Komplexität des Geschäfts bunter werden. Also eigenständiger R-Betrieb. An dieser Stelle beziehen wir uns auf das Konzept des Repositorys.
Halten Sie sich an das einheitliche SOLID-Prinzip
UserController<?php namespace App\Http\Controller; class UserController extends Controller{ public $request; protected $userService; public function __construct(Request $request, UserService $userService) { $this->request = $request; $this->userService = $userService; } public function getUserInfo() { //... validation return $this->userService->getUserInfo ($this->request->all()); } }
<?php namespace App\Service; class UserService{ public $userRepository; public function __construct(UserRepository $userRepository){ $this->userRepository = $userRepository; } public function getUserInfo() { return $this->userRepository->getUserInfo($data); } }
<?php namespace App\Repository; class UserRepository{ public function getUserInfo($data) { $userId = $data['user_id']; $result = User::where('id',$userId)->first(); return $result; } }
Aktion
<?php namespace App\Http\Controller; class UserController extends Controller{ public $request; protected $userService; public function __construct(Request $request, UserService $userService) {$this->request = $request;$this->userService = $userService; } public function register(){ //... validation return $this->userService->register($this->request->all()); } public function getUserInfo() {return $this->userService->getUserInfo ($this->request->all()); } }
UserService
<?php namespace App\Service; class UserService{ public function getUserInfo(UserRepository $userRepository) { return $this->userRepository->getUserInfo($data); } public function register(){ $result = (new CreateUser())->execute($this->request->all()); return $result; } }UserRepository
<?php namespace App\Repository; class UserRepository{ public function getUserInfo($data) { $userId = $data['user_id']; $result = User::where('id',$userId)->first();return $result; } }
<?php namespace App\Action; use App\Model\Member; class CreateUser extends CreateUserWallet { public function execute(array $data) {$models = new Member();$models->tel = $data['tel'];$models->password = $data['password'];$result = $models->save ();return $result; } }Die obige Codelogik ist in der Abbildung unten dargestellt
Sie können es verwenden, wenn Ihnen die Ausführungsergebnisse egal sind, aber Event's Listen bietet auch eine Warteschlange.
Verwenden Sie nicht die Eingabetaste, um alle Ihre Fehlermeldungen zurückzugeben. In vielen Fällen ist Ihre Rückgabe möglicherweise nicht Ihre Rückgabe
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonLassen Sie uns basierend auf PHP Laravel über Möglichkeiten sprechen, weniger „schlechten' PHP-Code zu schreiben! !. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!