Heim  >  Artikel  >  Backend-Entwicklung  >  So schreiben Sie hochwertigen PHP-Code

So schreiben Sie hochwertigen PHP-Code

coldplay.xixi
coldplay.xixinach vorne
2020-06-18 17:08:453146Durchsuche

So schreiben Sie hochwertigen PHP-Code

Dieses Kapitel wurde für neugeborene Kälber geschrieben, die keine Angst vor Tigern haben. Sie können es nach Belieben lesen. Es basiert auf PHP Laravel

Vorwort

Menschen fragen oft

  • Wie gestaltet man ein Verzeichnis besser?
  • Wie verteilt man den Code gut?
  • Wie schreibe ich ein wartbares Projekt?

Das Folgende basiert auf der Zusammenfassung von Artikeln und persönlichen Entwicklungserfahrungen großer Internet-Experten 🎜>

Controller

So schreiben Sie hochwertigen PHP-Code
Controller ist, wie der Name schon sagt, ein Controller Die C-Schicht in MVC selbst ist die Code-Trennung. Mit der Weiterentwicklung des Unternehmens nimmt jedoch auch die Komplexität des Codes zu und die Verknüpfungen zwischen den Funktionen werden komplexer Am Ende wird Ihr MVC zu Wie in der Abbildung unten gezeigt kann das wachsende Geschäft nicht mehr unterstützt werden, wenn man sich ausschließlich auf MVC-Designideen verlässt.

Jetzt definieren wir die Aufgaben und Fähigkeiten des Controllers neu. Der Controller steuert nur Http-Reqeust-Anfragen, was dem SOLID-Einzelfunktionsprinzip entspricht.

So schreiben Sie hochwertigen PHP-Code
Das Schreiben von Geschäftscode direkt im Controller führt dazu, dass der Code extrem aufgebläht und schwer zu warten und zu erweitern ist

<?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 Sie darüber nachdenken, wie Sie den Geschäftscode trennen können, und wir stellen das vor Konzept des Dienstes

Dienst

Dienst selbst wird als Dienst übersetzt

    Externe Methoden und öffentliche Methoden in Dienst einfügen
  • Dienst in Controller einfügen
So schreiben Sie hochwertigen PHP-Code
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());
		}

	}复制代码

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

    }复制代码

Up Bisher trennen wir das Geschäft zumindest vollständig von den Anfragen. 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 relevante Abfragelogik in verschiedene Repositorys zu kapseln, um die Wartung des Logikcodes zu erleichtern

    Entspricht dem einheitlichen Prinzip von SOLID
  • SOLID-konforme Abhängigkeitsinversion
So schreiben Sie hochwertigen PHP-Code
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 zusammengesetzt werden, weil CUD relativ einheitlich und einfach ist? Die Antwort ist NEIN, wir zitieren ein neues Substantiv Aktion.

Aktion

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

Unabhängig von jeder Operationsdatei, wie CreateUser, DeleteUser, UpdateUser

    Entspricht dem einheitlichen Prinzip von SOLID
So schreiben Sie hochwertigen PHP-Code
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

<?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 folgenden Abbildung dargestellt

So schreiben Sie hochwertigen PHP-Code
Außer Vorlage (V) Für HTML, JS usw. sind einige andere Regeln oder Methoden erforderlich, um die Entkopplung einiger Codes zu erreichen. Nachfolgend werden keine Codebeispiele bereitgestellt.

Common

bedeutet öffentlich und wird häufig verwendet. In einigen Entwicklungen benötigen Sie möglicherweise einige öffentliche Methoden (nicht öffentliche Klassen, z. B. E-Mail-Versand usw., die nicht für die Verwendung geeignet sind). B. den Kontostand des Benutzers abfragen, abfragen, ob der Benutzer registriert oder online ist, eine Bestellnummer generieren usw. Die Verwendung von Common ist noch einfacher. Es sieht eher aus wie eine öffentliche Funktionsbibliothek

So schreiben Sie hochwertigen PHP-Code

Ereignis

Sie können es verwenden, wenn Ihnen das egal ist Ausführungsergebnisse, aber auch das Listen von Ereigniswarteschlangen wird bereitgestellt.

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

Vielen Dank an alle Nachdem die Schüler diesen Artikel gelesen haben, diskutieren Sie diese bitte im Kommentarbereich

Empfohlenes Tutorial: „

php-Tutorial

Das obige ist der detaillierte Inhalt vonSo schreiben Sie hochwertigen PHP-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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