Heim >Backend-Entwicklung >PHP-Tutorial >Lassen Sie uns basierend auf PHP Laravel über Möglichkeiten sprechen, weniger „schlechten' PHP-Code zu schreiben! !

Lassen Sie uns basierend auf PHP Laravel über Möglichkeiten sprechen, weniger „schlechten' PHP-Code zu schreiben! !

青灯夜游
青灯夜游nach vorne
2021-06-07 18:49:383044Durchsuche

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.

Lassen Sie uns basierend auf PHP Laravel über Möglichkeiten sprechen, weniger „schlechten' PHP-Code zu schreiben! !

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

Vorwort

Menschen fragen oft

  • Wie kann man das Verzeichnis besser gestalten?
  • Wie verteilt man den Code gut?
  • Wie schreibe ich ein wartbares Projekt?

Ich schreibe auch über „schlechte“ Projekte. Das Folgende basiert auf der Zusammenfassung von Artikeln und persönlichen Entwicklungserfahrungen großer Internet-Experten.

Controller

Lassen Sie uns basierend auf PHP Laravel über Möglichkeiten sprechen, weniger „schlechten PHP-Code zu schreiben! !

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.

Lassen Sie uns basierend auf PHP Laravel über Möglichkeiten sprechen, weniger „schlechten PHP-Code zu schreiben! !

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(&#39;username&#39;);
			$user->password = $request->input(&#39;password&#39;);
			$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

Inject Service in den Controller

    Wie das Bild oben
  • 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 register()
		{
			//... validation
			return $this->userService->register ($this->request->all());
		}

	}

Lassen Sie uns basierend auf PHP Laravel über Möglichkeiten sprechen, weniger „schlechten PHP-Code zu schreiben! !UserService

<?php
	namespace App\Service;

    class UserService{
    
        public function register($data)
		{
            $username = $data[&#39;username&#39;];
            $password = $data[&#39;password&#39;];
         
			$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.

Repository

Wir verwenden das Repository-Hilfsmodell, um zugehörige Abfragelogik in verschiedene Repositorys zu kapseln und die Wartung des Logikcodes zu erleichtern.

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());
		}

	}

UserService

<?php
	namespace App\Service;

    class UserService{
        public $userRepository;
        
        public function __construct(UserRepository $userRepository){
            $this->userRepository = $userRepository;
        }
        public function getUserInfo()
		{
            return $this->userRepository->getUserInfo($data);
		}

    }
  • UserRepository
  • <?php
    	namespace App\Repository;
    
        class UserRepository{
        
            public function getUserInfo($data)
    		{
                $userId = $data[&#39;user_id&#39;];
                $result = User::where(&#39;id&#39;,$userId)->first();
    			
    			return $result;
    		}
    
        }
  • hat das Problem von R gelöst. Jemand fragte: Kann es zusammengestellt werden, weil CUD relativ einheitlich und einfach ist? Die Antwort ist NEIN, wir zitieren ein neues Substantiv Aktion.

Lassen Sie uns basierend auf PHP Laravel über Möglichkeiten sprechen, weniger „schlechten PHP-Code zu schreiben! !Aktion

Das habe ich gelernt, nachdem ich den Artikel von @Charlie_Jade gelesen habe

Separieren Sie jede Vorgangsdatei, z. B. CreateUser, DeleteUser, UpdateUser

Im Einklang mit dem einheitlichen Prinzip von SOLID

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 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[&#39;user_id&#39;];            $result = User::where(&#39;id&#39;,$userId)->first();return $result;
    		}
    
        }
CreateUser

Lassen Sie uns basierend auf PHP Laravel über Möglichkeiten sprechen, weniger „schlechten PHP-Code zu schreiben! !

<?php

	namespace App\Action;
	
	use App\Model\Member;
	
	class CreateUser extends CreateUserWallet
	{
		public function execute(array $data)
		{$models           = new Member();$models->tel      = $data[&#39;tel&#39;];$models->password = $data[&#39;password&#39;];$result           = $models->save ();return $result;
		}
	}

Die obige Codelogik ist in der Abbildung unten dargestellt

Außer Vorlage (V) und anderem HTML, J S, usw. sind einige andere Regeln erforderlich oder eine Möglichkeit, einige Codes zu entkoppeln. Im Folgenden werden keine Codebeispiele bereitgestellt.

Common

wird als öffentlich übersetzt und häufig verwendet. In einigen Entwicklungen benötigen Sie möglicherweise einige öffentliche Methoden (nicht öffentliche Klassen, z. B. E-Mail-Versand usw., deren Verwendung nicht geeignet ist), z Abfrage des Benutzerguthabens, Überprüfen, ob der Benutzer registriert oder online ist, Generieren einer Bestellnummer usw. Die Verwendung von Common ist noch einfacher. Es sieht eher aus wie eine öffentliche Veranstaltungsbibliothek

Event

Sie können es verwenden, wenn Ihnen die Ausführungsergebnisse egal sind, aber Event's Listen bietet auch eine Warteschlange.

Ausnahme

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen