$route->run();
/**
* 対応する MCA を実行します
*
*/
プライベート関数実行 ()
{
$filePath = APPLICATION_PATH.'/controller/'.$this->_moudle.'/'.$this->_contoller.'.inc.php';
$isNo = 0;
if(file_exists($filePath))
{
「$filePath」を含めます;
$controller_tp = $this->_contoller.'コントローラー';
$controller = 新しい $controller_tp;
if (method_exists($controller,$this->_action.'Action'))
{
$acion_tmp = $this->_action.'アクション';
$controller->$acion_tmp();
}その他}
{
$isNo = 1;
}
}その他}
{
$isNo = 1;
}
if ($isNo)
{
$filePath = APPLICATION_PATH.'/controller/default/index.inc.php';
$this->_moudle = $this->_default['モジュール'];
$this->_controller = $this->_default['controller'];
$this->_action = $this->_default['action'];
($this->_moudle != $this->_default['module']) && include "$filePath";
$controller = 新しいindexController;
$controller->indexAction();
}
}
関連する「Controller」ファイルが存在する場合に実行されます
コードは次のとおりです |
コードをコピー |
「$filePath」を含める;
$controller_tp = $this->_contoller.'コントローラー';
$controller = 新しい $controller_tp;
|
上記の 3 行のコードは、決定されたコントローラーに従って対応するファイルをインクルードし、対応するコントローラーをインスタンス化することを意味します。
コードは次のとおりです |
コードをコピー |
$acion_tmp = $this->_action.'アクション';
$controller->$acion_tmp();
|
対応するアクションに従って、対応するアクションを実行します
すべてのコントローラー クラスは共通のコントローラー クラスを統合します。このレッスンでは、パブリック コントローラー クラスを分析します。
/**
* フロントエンドのパブリッククラスインターフェイス
* 公開部分コードを実装します
*/
/**
* このファイルはインデックス作成のみ可能です。 php には が含まれています
*/
定義("WEB_AUTH") || 死ぬ("NO_AUTH");
/**
* メニュー設定ファイルが含まれています
*/
コードは次のとおりです
| コードをコピー
|
クラスコントローラー
{
公開 $tpl;
パブリック $controller;
public $body;//右メニュー
パブリック $_route ;
公開 $html_;
公開 $tpl_;
/*
* コンストラクター
*/
パブリック関数__construct()
{
$this->init();
}
/*
* 変数、トップメニュー、テンプレートを初期化します
*/
保護された関数 init()
{
グローバル $TPL,$route;
$this->tpl = $TPL;
$this->_route = $route;
}
/**
* テンプレート変数が渡されました
*/
保護された関数 diplayTpl()
{
$ this-> tpl-> assign( "body"、$ this-> body);
/*このコントローラーのテンプレートディレクトリを設定します*/
$this->controller ||$this->controller =$this->_route->getControllerName();
$this->tpl->assign("コントローラー",$this->コントローラー);
$this->tpl->display($this->layout);
}
/**
*スマートパッケージクラス
* @param string $name
* @param string $value
*/
パブリック関数 assign($name,$value)
{
$this->tpl->assign($name,$value);
}
/**
* 追加のテンプレートを表示します
* @param string $name
* @param string $value
*/
保護された関数displayOther($file)
{
$this->assign("otherTpl",TRUE);
$this->tpl->display($file);
}
/**
* 特定のMCAの本文テンプレートを表示します
* 0=>m 1=>c =>a
*/
保護された関数 getMcaBody($array)
{
return 'http://www.cnblogs.com/../'.$array[0].'/body/'.$array[1].'/'.$array[2];
}
/*
* デストラクター、ページを表示
*/
保護された関数 __destruct()
{
$this->tpl->tpl_vars['otherTpl'] || $this->diplayTpl();
}
/**
* 途中で退出してください
*/
保護された関数 _exit($msg = "")
{
$this->assign("otherTpl",TRUE);
死ね($msg);
}
/**
* $this->html_var=value を使用して変数に値を割り当てます
* $this->tpl_var=value を使用して変数に値を割り当てます
*/
保護された関数 __set($name,$value)
{
if(strto lower(substr($name,0,5)) == "html_" || strto lower(substr($name,0,4)) == "tpl_")
{
$this->assign(substr($name,5),$value);
}
}
}
?>
|
まずは見てください
コードは次のとおりです |
コードをコピー |
保護された関数 __destruct()
{
$this->tpl->tpl_vars['otherTpl'] || $this->diplayTpl();
}
|
これは、すべてのコントローラー クラスのライフサイクルの最後に実行される関数です (詳細については、PHP マジック メソッドを検索してください)
このフレームワークは、この時間を使用してテンプレートを解析します。この利点は、コントローラーで関連するデータ処理が完了すると、プログラムの最後にテンプレートを呼び出すのではなく、関連するテンプレート (ビュー) が自動的に実行されることです。毎回
コードは次のとおりです |
コードをコピー |
保護された関数 __set($name,$value)
{
if(strto lower(substr($name,0,5)) == "html_" || strto lower(substr($name,0,4)) == "tpl_")
{
$this->assign(substr($name,5),$value);
}
}
|
この関数は、プログラムが変数をテンプレートに渡す方法を簡略化します。smarty を例に挙げると、$tpl->assign(‘key’,$value); を実行する必要があります。
テンプレートに変数を登録するには、この関数では $this->html_key=$value; だけが必要です (開発環境のプロンプト関数を使用して前に宣言します)。
コードは次のとおりです
| コードをコピー
|
公開 $html_;
公開 $tpl_;
|
http://www.bkjia.com/PHPjc/629229.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629229.html技術記事この記事では、MVC のコントローラー クラスのチュートリアルについて説明します。前の 2 つのセクションを通じて、プログラムが単一のエントリ ファイルのルート クラスを通じて唯一の Modle、Controller、Action を決定し、最終的にはそれを決定することがわかりました。 .
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |