ホームページ  >  記事  >  バックエンド開発  >  ZendのMVC機構利用分析(2)_PHPチュートリアル

ZendのMVC機構利用分析(2)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:11:39894ブラウズ

上記記事に続きます


コードを投稿します

コードをコピーします コードは次のとおりです:

$front = Zend_Controller_Front::getInstance();
Zend_Layout::startMvc(array('layoutPath' => USVN_LAY)アウトS_DIR));

$front->setRequest(new Zend_Controller_Request_Http());
$front->setBaseUrl($config->url->base);

$router = 新しい Zend_Controller_Router_Rewrite();
$routes_config = 新しい USVN_Config_Ini(USVN_ROUTES_CONFIG_FILE, USVN_CONFIG_SECTION);
$routes_config, 'routes');外側($ルーター);
$front->setControllerDirectory(USVN_CONTROLLERS_DIR);

$front->dispatch();
前回の記事で、getInstance関数とstartMvc関数の最初の2文を読み終えました、今度は次のコードの分析を続けます

setRequest($request) これは、リクエストが Zend_Controller_Request_Abstract から継承されているかどうかを判断するためのもので、そうである場合は、front の _request の値をそれに割り当てます。

ここでは、Zend_Controller_Request_Abstract が何であるかを理解する必要があります。これは、すべてのリクエストを抽象化する抽象クラスです。 Zend は、Zend_Controller_Request_Http と Zend_Controller_Request_Simple という 2 つの実装クラスを提供しています。通常、サーバーを構築するときは http リクエストを使用するため、プロジェクトが再度継承する必要がある場合、通常は Zend_Controller_Request_Http を直接継承します。

Zend_controller_Request_Http では、よく使用する getQuery、getCookie、getRequestUri、getBasePath、getParams、getHeader などの通常の Http オプションがすでに利用可能です。

基本クラス Zend_Controller_Request_Abstract について引き続き説明します。このクラスのメソッドは次のとおりです。


コードに戻る

$front->setRequest(new Zend_Controller_Request_Http()); Zend_Controller_Request_Http のコンストラクターは、最初に呼び出されるときに、$this->setRequestUri(); の多くが直接使用されます。 $ PHP グローバル変数 _SERVER のデータを使用して requestUri を取得します。

setRequestUri から学べることは、http://172.23.11.160/usvn/item/usvn_test この URL、そのrequestUri は /usvn/item/usvn_test です

$front->throwExceptions(true); 内部の _throwExceptions フラグを true に設定します。

$front->setbaseUrl("/usvn") は 2 つのことを行います。まず、front の内部 _baseUrl 属性を設定します。次に、Request の setBaseUrl を呼び出します。これにより、Zend_Controller_Request_Http の内部 _baseUrl 属性も設定されます。

$router = 新しい Zend_Controller_Router_Rewrite();


$routes_config = 新しい USVN_Config_Ini(USVN_ROUTES_CONFIG_FILE, USVN_CONFIG_SECTION);

$router->addConfig($routes_config, 'routes');

$front->setRouter($router);

実際、次の 3 行は、Zend の Router モジュールを使用して設定ファイルを使用し、先頭に配置されています。

最後の文


$front->dispatch();


この機能は最もコアな機能でもあります。

この関数は、最初にプラグイン Zend_Controller_Plugin_ErrorHandler をインデックス 100 で登録し、最後にプラグインの順序を置きます。

2 番目のステップでは、ヘルパー Zend_Controller_Action_Helper_ViewRenderer をインデックス -80 で保存します

リクエストは以下でインスタンス化され、リクエストは Zend_Controller_Request_Http タイプです。そして、リクエストのbaseUrlを、以前に設定した_baseUrl、つまり「/usvn/item/usvn_test」に設定します

その後、応答がインスタンス化され、応答は Zend_Controller_Response_Http();

になります。

以下ではプラグインを使用してリクエストとレスポンスを設定します。まず、Zend_Controller_Plugin_Broker の setRequest 関数が実際に呼び出され、ブローカーによって管理されるすべてのプラグインをループし、プラグインの setRequest($request) 関数を呼び出します。

次に、ルーターを初期化し、ルーターのパラメータを設定します。ルーターは以前に設定されており、Zend_Controller_Router_Rewrite タイプです

ディスパッチャ Dispatcher を初期化します。初めてディスパッチャである Zend_Controller_Dispatcher_Standard クラスを確認します。販売代理店については後述します。

次のプロセス:
プラグインのrouteStartupを呼び出してリクエストを処理します

ルーターのルートを呼び出してリクエストを処理します

プラグインのrouteShutdownを呼び出してリクエストを処理します

プラグインのdispatchLoopStartupを呼び出してリクエストを処理します

サイクル配布プロセスに入る

プラグインの preDispatch を呼び出してリクエストを処理します

リクエストとレスポンスを処理するためにディスパッチャのディスパッチを呼び出します

プラグインの postDispatch を呼び出してリクエストを処理します

ループ配信プロセスから抜け出す

プラグインのdispatchLoopShutdownを呼び出してリクエストを処理します

返信を送信



http://www.bkjia.com/PHPjc/326856.html

tru​​ehttp://www.bkjia.com/PHPjc/326856.html技術記事上記の記事に従って、次のようにコードを貼り付けてコピーします。 $front = Zend_Controller_Front::getInstance(); Zend_Layout::startMvc(array('layoutPath' = USVN_LAYOUTS_DIR));
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。