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

WBOY
リリース: 2016-06-23 13:24:02
オリジナル
834 人が閲覧しました

ほとんどすべての 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);
ログイン後にコピー

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

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!