ホームページ  >  記事  >  バックエンド開発  >  PHP Laravel に基づいて、「悪い」PHP コードを少なく書く方法について話しましょう。 !

PHP Laravel に基づいて、「悪い」PHP コードを少なく書く方法について話しましょう。 !

青灯夜游
青灯夜游転載
2021-06-07 18:49:383008ブラウズ

この記事では、「悪い」PHP コードを記述する方法を詳しく紹介します。 !一定の参考値があるので、困っている友達が参考になれば幸いです。

PHP Laravel に基づいて、「悪い」PHP コードを少なく書く方法について話しましょう。 !

生まれたばかりの子牛でトラを怖がらない子供たちに向けて書かれたものなので、自由に読むことができます。 この章は PHP Laravel に基づいています

序文

よく質問されます

  • ディレクトリをより適切に設計するにはどうすればよいですか?
  • コードを適切に配布するにはどうすればよいでしょうか?
  • 保守可能なプロジェクトの書き方?

私は「悪い」プロジェクトについても書いています。以下は、記事の要約と主要なインターネット専門家の個人的な開発経験に基づいています。

#Controller

PHP Laravel に基づいて、「悪い」PHP コードを少なく書く方法について話しましょう。 !

Controller は、その名前が示すように、コントローラーです。PHP を使い始めると、Controller が次のことを表すことがわかります。 MVC の C 層です。MVC 自体の概念は、ビジネスを分離する方法を教えるコード分離です。しかし、ビジネスが発展し続けるにつれて、コードの複雑さも増し、機能間のつながりも複雑になります。最終的に、MVC は次の図のようになります。MVC の設計アイデアだけに依存すると、成長するビジネスをサポートできなくなります。

ここで、コントローラーのタスクと機能を再定義します。コントローラーは、SOLID 単一関数の原則に準拠する Http Reqeust リクエストのみを制御します。

PHP Laravel に基づいて、「悪い」PHP コードを少なく書く方法について話しましょう。 !

書き込みビジネス コードをコントローラー内に直接配置すると、コードが非常に肥大化し、保守や拡張が困難になります。

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

	}

この時点で、ビジネス コードをどのように分離するかを検討する必要があります。サービスの概念を導入します

Service

サービス自体はサービスとして変換されます

    外部メソッドとパブリック メソッドをサービスに挿入します
  • サービスをサービスに挿入しますコントローラ

PHP Laravel に基づいて、「悪い」PHP コードを少なく書く方法について話しましょう。 !

上の図のように

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

    }

これまで、私たちは少なくともビジネスとリクエストを完全に分離してきました。しかし、それでも不十分で、ビジネスや CURD をすべて Service で書いてしまうと、肥大化した Controller を Service に移すだけになり、Service の存在意味がなくなってしまいます。 したがって、サービスを分割し、データベースの R 操作を分離し続ける必要があります。CUD の操作は基本的に同じですが、R 操作はビジネスの複雑さに応じてより多彩になるためです。したがって、スタンドアロンの R 操作。この時点では、リポジトリの概念について言及します。

リポジトリ

リポジトリ補助モデルを使用して、関連するクエリ ロジックをさまざまなリポジトリにカプセル化し、ロジック コードのメンテナンスを容易にします

    準拠SOLID の単一原則
  • SOLID 依存関係反転に準拠

PHP Laravel に基づいて、「悪い」PHP コードを少なく書く方法について話しましょう。 !

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

    }
R の問題を解決した後、CUD は比較的統一されていてシンプルなので、まとめることはできるのかと誰かが尋ねました。答えは「いいえ」です。新しい名詞「アクション」を引用します。

アクション

これは @Charlie_Jade の記事を読んだ後に学んだことです

CreateUser などの各操作ファイルから独立しています,DeleteUser,UpdateUser

#SOLID の 1 つの原則に準拠

#UserControllerPHP Laravel に基づいて、「悪い」PHP コードを少なく書く方法について話しましょう。 !

<?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[&#39;tel&#39;];$models->password = $data[&#39;password&#39;];$result           = $models->save ();return $result;
		}
	}

上記のコード ロジックを次に示します。下の図

テンプレート (V) や他の HTML、JS などに加えて、一部のコードの分離を実現するには、他のいくつかのルールまたはメソッドが必要です。以下ではコード例は提供されません。

PHP Laravel に基づいて、「悪い」PHP コードを少なく書く方法について話しましょう。 !

Common

は public と訳され、一般的に使用されます。開発によっては、いくつかのパブリック メソッド (電子メール送信などのパブリック クラスではない) が必要になる場合があります。ユーザーの残高の確認、ユーザーが登録されているかオンラインであるかの確認、注文番号の生成などの使用は適切ではありません。 Common を使用するのはさらに簡単です。パブリック関数ライブラリのように見えます

Event

実行結果を気にしない場合は、これを使用することもできますが、Event の Listen にはキューも用意されています。

例外

すべてのエラー メッセージを返すために Return を使用しないでください。多くの場合、戻り値が戻り値ではない可能性があります。

推奨される学習: 「PHP」ビデオチュートリアル>>

以上がPHP Laravel に基づいて、「悪い」PHP コードを少なく書く方法について話しましょう。 !の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。