ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルでの MVC コントローラーの実装

PHP_PHP チュートリアルでの MVC コントローラーの実装

WBOY
WBOYオリジナル
2016-07-13 17:34:25763ブラウズ

コントローラー【コントローラー】

簡単に言えば、コントローラーの役割はリクエストを受け入れることです。 get メソッド (この場合は URI 経由) を使用して、プレゼンテーション層を更新または送信するための汎用モジュールをロードします。コントローラーは $_GET 自動グローバル変数を使用して、どのモジュールをロードするかを決定します。
リクエストの例は次のようになります:
http://example.com/index.php?module=login
これは簡単そうに思えますが、実装してみるとそうではありません。コントローラーによって認識される引数の部分をいくつか示します:
モジュールは、users モジュールなど、使用するモジュールを定義します
class は、ユーザーにログインまたはログアウトするかどうかなど、使用する関数クラスを定義します
イベントはどの特定のイベントを使用するかを定義します

このようなより複雑な例は、最終的に上記の各引数で構成されるリクエスト URL を説明できます:
http://example.com/index.php?module=users&class=login
このリクエストは、users モジュールをロードし、次にログイン クラスをロードする必要があることをコントローラに伝えます。最後に、特定のイベントが定義されていないため、login::__default() デフォルト イベントが実行されます。
以下は具体的なコード部分です:

/**
  * index.php
  *
  * @author Joe Stump
  * @copyright Joe Stump
  * @license http://www.opensource.org/licenses/gpl-license.php
  * @package フレームワーク
  */

require_once('config.php');
// {{{ __autoload($class)
/**
  * __自動ロード
  *
  * 自動ロードは、ロードしようとしているクラスが見つからない場合に、PHP によって実行されます。
  * クラスに賢く名前を付けることで、ほとんどのクラスをロードできるようになります
  * 動的。
  *
  * @author Joe Stump
  * @param string $class ロードしようとしているクラス名
  * @return void
  * @package フレームワーク
  */
関数 __autoload($class)
{
$file = str_replace('_','/',substr($class,2)).'.php';
require_once(FR_BASE_PATH.’/includes/’.$file); }
// }}}

if (isset($_GET[’module’])) {
$module = $_GET['モジュール']
If (isset($_GET['event'])) {
$event = $_GET['event']; } else {
$event = '__default';                                                                        
If (isset($_GET[’class’])) {
$class = $_GET['class']
} else {
$class = $module
                                                                        
$classFile = FR_BASE_PATH.'/modules/'.$module.'/'.$class.'.php'; If (file_exists($classFile)) {
require_once($classFile); If (class_exists($class)) {
試す $instance = new $class(); If (!FR_Module::isValid($instance)) {
                      die("要求されたモジュールは有効なフレームワーク モジュールではありません!");
                  }

                  $instance->moduleName = $module;
                  if ($instance->authenticate()) {
                      試してみてください{
                         $result = $instance->$event();
                          if (!PEAR::isError($result)) {
                              $presenter = FR_Presenter::factory(
                                  $instance->プレゼンター,$instance
                              ); 

                              if (!PEAR::isError($presenter)) {
                                  $presenter->display();
                              } その他 {
                                  die($presenter->getMessage());
                              }
                         }
                      } キャッチ (例外 $error) {
          &nb

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/508490.html技術記事コントローラー [コントローラー] は、単に要求を受け取ることです。これは、URI を介して機能モジュールにインストールされ、更新または転送される、取得方法を使用します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。