アプリケーション プリンシパルはサービス ロケーターであり、リクエストを処理するためのさまざまな機能を提供する一連のアプリケーション コンポーネントをデプロイします。たとえば、urlManager コンポーネントは、Web ページ要求を対応するコントローラーにルーティングする役割を果たします。 db コンポーネントは、データベース関連のサービスなどを提供します。
yii Framework)
\Yii::$app->componentID
[ '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 を追加できます。 クロージャを使用してカスタム コンポーネントを起動することもできます。インスタンス化されたコンポーネントを直接返す必要はありません。クロージャは、アプリケーション本体 yii\base\Application がインスタンス化された後にも呼び出されます。 たとえば、次のアプリケーション本体の構成では、ログ コンポーネントが常に読み込まれることが保証されます。[ 'bootstrap' => [ 'log', function($app){ return new ComponentX(); }, function($app){ // 可以写自定义的代码 return; } ], 'components' => [ 'log' => [ // "log" 组件的配置 ], ], ]
コア アプリケーション コンポーネント
Yii は、固定 ID とデフォルト構成を持つ一連のコア コンポーネントを定義します。たとえば、リクエスト コンポーネントは、ユーザー リクエストの収集と解析に使用されます。ルート; db は、データベース操作を実行できるデータベース接続を表します。これらのコンポーネントを通じて、Yii アプリケーション本体はユーザーのリクエストを処理できます。 以下は、事前定義されたコア アプリケーション コンポーネントのリストであり、通常のアプリケーション コンポーネントと同様に構成およびカスタマイズできます。コアコンポーネントを設定し、そのクラス名を指定しない場合、デフォルトで Yii によって指定されたクラスが使用されます。以上がYii フレームワークアプリケーションコンポーネントはサービスロケーターですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。