アプリケーションとは、リクエスト処理における実行コンテキストを指します。その主なタスクは、ユーザーのリクエストを分析し、さらなる処理のために適切なコントローラーにリクエストをディスパッチすることです。 また、アプリケーション レベルの構成を維持するサービス センターとしても機能します。このため、アプリケーションはフロントエンド コントローラーとも呼ばれます。
アプリケーションは、エントリスクリプトによってシングルトンオブジェクトとして作成されます。このアプリケーション シングルトン オブジェクトは、Yii::app() を介してどこからでもアクセスできます。
デフォルトでは、アプリケーションは CWebApplication のインスタンスです。これをカスタマイズするには、通常、アプリケーション インスタンスの作成時にそのプロパティ値を初期化するための構成ファイル (または配列) を提供する必要があります。アプリケーションをカスタマイズするもう 1 つの方法は、CWebApplication を拡張することです。
設定はキーと値のペアの配列です。各キーはアプリケーション インスタンス内のプロパティの名前を表し、各値は対応するプロパティの初期値です。 たとえば、次の構成では、アプリケーションの名前とdefaultControllerプロパティを設定します。
array( 'name'=>'Yii Framework', 'defaultController'=>'site', )
通常、これらの設定は別の PHP スクリプト (例: protected/config/main.php) に保存されます。スクリプトでは、この設定配列を次のように返します:
return array(...);
この設定を適用するには、以下のように設定ファイルの名前をパラメータとしてアプリケーションのコンストラクターまたは Yii に渡します。 () 。これは通常、エントリ スクリプトで行われます:
$app=Yii::createWebApplication($configFile);
ヒント: アプリケーション構成が非常に複雑な場合は、アプリケーション構成を複数のファイルに分割し、各ファイルが構成配列の一部を返すことができます。 次に、メインの構成ファイルで、PHP の include() を呼び出して残りの構成ファイルをインクルードし、それらを完全な構成配列にマージします。
アプリケーションのベース ディレクトリは、セキュリティに敏感なすべての PHP スクリプトとデータを含むルート ディレクトリを指します。デフォルトでは、これはエントリ スクリプトを含むディレクトリ内にある protected という名前のサブディレクトリです。アプリケーション構成でbasePath属性を設定することでカスタマイズできます。
アプリケーションのベース ディレクトリ内のコンテンツは、Web サイト訪問者による直接アクセスから保護される必要があります。 Apache HTTP サーバーの場合、これは .htaccess ファイルをベース ディレクトリに配置することで簡単に実現できます。 .htaccess の内容は次のとおりです:
deny from all
アプリケーションの機能は、柔軟なコンポーネント構造により簡単にカスタマイズまたは拡張できます。アプリケーションは一連のアプリケーション コンポーネントを管理し、各コンポーネントは特定の機能を実装します。 たとえば、アプリケーションは CUrlManager と CHttpRequest を使用してユーザーからのリクエストを解析します。
アプリケーションのコンポーネント属性を設定することで、アプリケーションで使用されるコンポーネントクラスとその属性値をカスタマイズできます。たとえば、キャッシュに複数の memcache サーバーを使用できるようにアプリケーションの CMemCache コンポーネントを設定できます。
array( ...... 'components'=>array( ...... 'cache'=>array( 'class'=>'CMemCache', 'servers'=>array( array('host'=>'server1', 'port'=>11211, 'weight'=>60), array('host'=>'server2', 'port'=>11211, 'weight'=>40), ), ), ), )
上に示したように、コンポーネント配列にキャッシュ要素を追加しました。キャッシュ要素は、このコンポーネントのクラスが CMemCache であることを示し、それに応じてサーバー属性を初期化する必要があります。
アプリケーションコンポーネントにアクセスするには、 Yii::app()->ComponentID を使用します。ここで、 ComponentID はコンポーネント ID (Yii::app()->cache など) を指します。
アプリコンポーネントは、設定でenabledをfalseに設定することで無効にできます。無効なコンポーネントにアクセスすると、Null が返されます。
ヒント: デフォルトでは、アプリケーションコンポーネントはオンデマンドで作成されます。これは、ユーザー要求でアクセスされない場合、アプリケーション コンポーネントはまったく作成されない可能性があることを意味します。 したがって、アプリケーションが多数のコンポーネントで構成されている場合でも、全体的なパフォーマンスは低下しない可能性があります。一部のアプリケーション コンポーネント (CLogRouter など) は、アクセスされるかどうかに関係なく、作成する必要がある場合があります。 これを行うには、アプリの preload 属性にその ID をリストします。
Yii は、一般的な Web アプリケーションで使用される機能を提供する一連のコアアプリケーションコンポーネントを事前に定義します。たとえば、リクエスト コンポーネントは、ユーザー リクエストを解析し、URL、Cookie などの情報を提供するために使用されます。 これらのコアコンポーネントのプロパティを設定することで、ほぼすべての面で Yii のデフォルトの動作を変更できます。
以下に、CWebApplication によって事前定義されたコア コンポーネントをリストします。
assetManager: CAssetManager - プライベートリソースファイルのリリースを管理します。
authManager: CAuthManager - ロールベースのアクセス制御 (RBAC) を管理します。
cache: CCache - データ キャッシュ機能を提供します。実際のクラス (CMemCache、CDbCache など) を指定する必要があることに注意してください。 それ以外の場合、このコンポーネントにアクセスすると NULL が返されます。
clientScript: CClientScript - クライアント側スクリプト (JavaScript と CSS) を管理します。
coreMessages: CPhpMessageSource - Yii フレームワークで使用されるコアメッセージの翻訳を提供します。
db: CDbConnection - データベース接続を提供します。このコンポーネントを使用するには、その connectionString プロパティを設定する必要があることに注意してください。
errorHandler: CErrorHandler - 捕捉されなかった PHP エラーと例外を処理します。
format: CFormatter - フォーマットされた数値表示。この機能はバージョン 1.1.0 以降で利用可能です。
messages: CPhpMessageSource - Yii アプリケーションで使用されるメッセージ翻訳を提供します。
request: CHttpRequest - ユーザーのリクエストに関する情報を提供します。
securityManager: CSecurityManager - ハッシュ、暗号化などのセキュリティ関連サービスを提供します。
session: CHttpSession - セッション関連の機能を提供します。
statePersister: CStatePersister - グローバル状態永続メソッドを提供します。
urlManager: CUrlManager - URL 解析および作成関連の機能を提供します。
user: CWebUser - 現在のユーザーの識別情報を提供します。
themeManager: CThemeManager - テーマを管理します。
ユーザーリクエストを処理するとき、アプリケーションは次の宣言サイクルを実行します:
CApplication::preinit() を通じてアプリケーションを事前初期化する
クラスとエラー処理の登録;
CApplication::init() によるアプリケーションの初期化:
onEndRequest イベントをトリガーします。