Yii2.0 アプリケーションコンポーネント

伊谢尔伦
リリース: 2016-11-25 14:18:32
オリジナル
1051 人が閲覧しました

アプリケーション プリンシパルはサービス ロケーターであり、リクエストを処理するためのさまざまな機能を提供するアプリケーション コンポーネントのセットをデプロイします。 たとえば、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]]: レンダリング ビューをサポートします。詳細については、「ビュー」セクションを参照してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート