アプリケーション プリンシパルはサービス ロケーターであり、リクエストを処理するためのさまざまな機能を提供するアプリケーション コンポーネントのセットをデプロイします。 たとえば、urlManager コンポーネントは、Web ページ要求を対応するコントローラーにルーティングする役割を果たします。 db コンポーネントは、データベース関連のサービスなどを提供します。
同じアプリケーション内で、各アプリケーション コンポーネントには、他のアプリケーション コンポーネントを区別するための一意の ID があり、次の式を使用してアプリケーション コンポーネントにアクセスできます。
\Yii::$app->componentID
たとえば、Yii::$app->db を使用してアプリケーションに登録されている [[yiidbConnection|DB 接続]] を取得し、Yii::$app->cache を使用して登録されたアプリケーションを取得できます。 [[yiicachingCache|一次キャッシュ]]。
上記の式を初めて使用すると、アプリケーション コンポーネントのインスタンスが作成され、それ以降のアクセスではこのインスタンスが返されるため、再度作成する必要はありません。
アプリケーションコンポーネントは任意のオブジェクトにすることができ、アプリケーション本体の設定で [[yiibaseApplication::components]] 属性を使用して設定できます。 例:
[ 'components' => [ // 使用类名注册 "cache" 组件 'cache' => 'yii\caching\ApcCache', // 使用配置数组注册 "db" 组件 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=demo', 'username' => 'root', 'password' => '', ], // 使用函数注册"search" 组件 'search' => function () { return new app\components\SolrService; }, ], ]
補足: アプリケーションコンポーネントは次のようになります。グローバル変数を使用しすぎると、テストとメンテナンスがより困難になる可能性があります。 通常、必要に応じてローカル コンポーネントを作成できます。
ブートスタートアップコンポーネント
前述したように、アプリケーションコンポーネントは最初のアクセス時にのみインスタンス化されます。リクエストの処理中にアクセスがなかった場合、インスタンス化されません。 アクセスされない場合でも、リクエスト処理のたびにコンポーネントをインスタンス化したい場合があります。コンポーネント ID をアプリケーション本体の [[yiibaseApplication::bootstrap|bootstrap]] 属性に追加できます。
たとえば、次のアプリケーション本体の構成では、ログ コンポーネントが常に読み込まれることが保証されます。
[ 'bootstrap' => [ // 将 log 组件 ID 加入引导让它始终载入 'log', ], 'components' => [ 'log' => [ // "log" 组件的配置 ], ], ]
コア アプリケーション コンポーネント
Yii は、ユーザー リクエストを収集しルートを解析する [[yiiwebApplication::request|request]] コンポーネントなど、固定 ID とデフォルト設定を持つ一連のコア コンポーネントを定義します。 db]] は、データベース操作を実行できるデータベース接続を表します。 これらのコンポーネントを通じて、Yii アプリケーション本体はユーザーのリクエストを処理できます。
以下は、事前定義されたコア アプリケーション コンポーネントのリストであり、通常のアプリケーション コンポーネントと同様に構成およびカスタマイズできます。 コアコンポーネントを設定し、そのクラス名を指定しない場合、デフォルトで Yii によって指定されたクラスが使用されます。
[[yiiwebAssetManager|assetManager]]: リソース パッケージとリソースの公開を管理します。詳細については、「リソースの管理」セクションを参照してください。
このコンポーネントを設定するときは、コンポーネントのクラス名と、[[yiidbConnection::dsn]] などの他の関連コンポーネント属性を指定する必要があることに注意してください。 詳細については、「データ アクセス オブジェクト」セクションを参照してください。
[[yiibaseApplication::errorHandler|errorHandler]]: PHP エラーと例外を処理します。詳細については、「エラー処理」セクションを参照してください。
日付には長い形式を使用します。詳細については、「出力データのフォーマット」セクションを参照してください。
[[yiii18nI18N|i18n]]: 情報の翻訳と書式設定をサポートします。詳細については、「国際化」セクションを参照してください。
[[yiilogDispatcher|log]]: ログオブジェクトを管理します。詳細については、「ログ」セクションを参照してください。
[[yiiswiftmailerMailer|mail]]: 電子メール構造の生成と送信をサポートします。詳細については、「メール」セクションを参照してください。
詳細については、「返信」セクションを参照してください。
詳しくはリクエスト欄をご覧ください。
[[yiiwebSession|session]]: [[yiiwebApplication|Web アプリケーション]] Web アプリケーションでのみ利用可能なセッション情報を表します。 詳細については、「セッションと Cookie」セクションを参照してください。
詳細については、URL の解析と生成のセクションを参照してください。
[[yiiwebUser|user]]: 認証ログイン ユーザー情報を表します。[[yiiwebApplication|Web アプリケーション]] Web アプリケーションでのみ使用できます。詳細については、認証セクションを参照してください。
[[yiiwebView|view]]: レンダリング ビューをサポートします。詳細については、「ビュー」セクションを参照してください。