ホームページ >バックエンド開発 >PHPチュートリアル >PHP フレームワーク開発ファクトリー モードの最初のステップ

PHP フレームワーク開発ファクトリー モードの最初のステップ

WBOY
WBOYオリジナル
2016-06-23 13:24:02870ブラウズ

ほとんどすべての PHP フレームワークは単一エントリ ファイル方式を使用します。これは、すべてのリクエストがindex.php から入力されることを意味します。次に、ファクトリ パターンを使用してリクエストの分散を実現する必要があります。

たとえば、次のような URL をリクエストしています:

http://www.test.com/index.php?c=User&a=index



これは、User コントローラーのインデックス メソッドをリクエストする必要があることを意味します。つまり、index.php はパラメーターに基づいてユーザー コントローラーのインスタンスを作成し、index メソッドを呼び出す必要があります。 「工場」の機能を実装しているようです。

次のようなファクトリ クラスを実装できます:

class Factory{		public static function getInstance($controller_name,$action_name){				if(class_exists($controller_name)){						$controller = new $controller_name;						if(method_exists($controller,$action_name)){								$controller->$action_name();			}else{								exit('action not found');			}		}else{						exit('controller not found');		}		}	}



このファクトリ クラスを使用すると、すべてのロジックを完了するには、index.php に次のコードを記述するだけで済みます。

まず、コントローラー名とメソッド名を受け取り、ファクトリ クラス Factory の getInstance メソッドに渡します。 Factory は、コントローラーのインスタンス化と対応するメソッドの呼び出しを自動的に支援します。

これはファクトリ クラスであり、特定のパラメータを指定すると、残りの作業を自動的に実行します。

ファクトリ クラスがどのように実装されるかを見てみましょう。まずコントローラー クラスが存在するかどうかを確認します:

$controller_name = $_GET['c'];$action_name = $_GET['a'];Factory::getInstance($controller_name,$action_name);

クラスが存在しない場合は、次のプロンプトが表示されます: コントローラーが見つかりません

次に、コントローラーのインスタンスを作成します。メソッドが存在するかどうかを確認して実行します。

class_exists($controller_name);

これはファクトリ クラスの実装原則であり、もちろん、引き続き改善することができます。

多くの場合、コントローラーを別のファイルに配置します。このとき、ファクトリー クラスは最初にコントローラー ファイルを導入する必要があります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。