Yii::app()->name は yii にキャッシュされていますか? 常用しても大丈夫ですか?レイアウトでカスタム ページ タイトルを使用することにし、コントローラーでこのようなものを使用します。
$this->pageTitle = Yii::app()->name . ":" . $action
キャッシュキャッシュではありませんが、使い放題でOKです。ガイドから:
アプリケーション オブジェクトは、エントリ スクリプトによってシングルトンとしてインスタンス化されます。アプリケーション シングルトンは、Yii::app() を介してどこからでもアクセスできます。
したがって、オブジェクトは既にそこにあり、nameプロパティを読み取るためにアクセスしているだけです。
更新:これをよりよく理解するために、アプリケーションのライフサイクルをたどってみましょう:
Yii::createWebApplication。Yii::createWebApplicationYii::createApplicationこれにより、新しい CWebApplication オブジェクトが作成されます。つまり、そのコンストラクター(親 CApplication で定義されている) が呼び出されます。このコンストラクターは、アプリケーション シングルトン オブジェクトを設定します。
Yii::setApplication($this);
次に、ライフサイクルの最初の 4 つのステップを実行します (上記のアプリケーション ライフサイクルリンクから)。
$this->preinit();$this->initSystemHandlers();$this->registerCoreComponents();$this->configure($config);。これにより、 が設定されnameます。$this->attachBehaviors($this->behaviors);$this->preloadComponents();CApplication::init();$this->init();作成されたアプリケーションオブジェクトcreateApplicationはtoによって返されcreateWebApplicationます。
次に、この同じオブジェクトを使用して、エントリ スクリプトでrun()メソッドを呼び出します。
Yii::createWebApplication($config)->run();
その後、runメソッドは残りのライフサイクルを実行します。
(6)onBeginRequestイベントを発生させます。すなわち:$this->onBeginRequest(new CEvent($this));
(7) ユーザー要求を処理します (を使用$this->processRequest();):
コントローラーを実行します。
したがって、コントローラーが実行されているときに、コンストラクターで作成および設定されYii::app()た同じオブジェクトcreateApplicationを呼び出すと、 が使用されるため、新しいオブジェクトは作成されず、プロパティは既存のオブジェクトからフェッチされます。
(8)onEndRequestイベントを発生させます。すなわち:$this->onEndRequest(new CEvent($this));