Yii2 framework backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

6.3 KiB

Komponenty aplikacji

Aplikacje są lokatorami usług. Posiadają one zestawy komponentów aplikacji, które zajmują się dostarczaniem różnych serwisów do obsługi żądań. Dla przykładu, komponent urlManager jest odpowiedzialny za przekierowania żądań do odpowiednich kontrolerów, komponent db dostarcza serwisy powiązane z bazami danych, itp.

Każdy komponent aplikacji posiada unikalne ID identyfikujące go w całej aplikacji. Możesz dostać się do tego komponentu przez wyrażenie:

\Yii::$app->componentID

Dla przykładu, możesz użyć \Yii::$app->db do uzyskania yii\db\Connection lub \Yii::$app->cache do uzyskania yii\caching\Cache zarejestrowanej w aplikacji.

Komponent jest tworzony przy pierwszym jego wywołaniu przez powyższe wyrażenie, każde kolejne wywołanie zwróci tą samą instancję tego komponentu.

Komponentami aplikacji może być każdy objekt. Możesz je zarejestrować przez skonfigurowanie parametru yii\base\Application::components w konfiguracji aplikacji. Dla przykładu:

[
    'components' => [
        // rejestracja komponentu "cache" przy użyciu nazwy klasy
        'cache' => 'yii\caching\ApcCache',

        // rejestracja komponentu "db" przy użyciu tablicy konfiguracyjnej
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=demo',
            'username' => 'root',
            'password' => '',
        ],

        // rejestracja komponentu "search" przy użyciu funkcji anonimowej
        'search' => function () {
            return new app\components\SolrService;
        },
    ],
]

Info: Możesz zarejestrować tak wiele komponentów jak chcesz, jednak powinieneś robić to rozważnie. Komponenty aplikacji są podobne do zmiennych globalnych. Używanie zbyt wielu komponentów może potencjalnie uczynić Twój kod trudniejszym do testowania i utrzymania. W wielu przypadkach możesz po prostu utworzyć lokalny komponent i użyć go, kiedy jest to konieczne.

Bootstrapping komponentów

Tak, jak było wspomniane wcześniej, komponent aplikacji zostanie zinstancjowany tylko w momencie pierwszego wywołania. Czasami jednak chcemy, aby komponent został zainstancjowany dla każdego żądania, nawet jeśli nie jest bezpośrednio wywoływany. Aby to osiągnąć, możesz wylistować ID komponentów we właściwości yii\base\Application::bootstrap aplikacji.

Dla przykładu, następująca konfiguracja aplikacji zapewnia załadowanie komponentu log przy każdym żądaniu:

[
    'bootstrap' => [
        'log',
    ],
    'components' => [
        'log' => [
            // konfiguracja komponentu `log`
        ],
    ],
]

Podstawowe komponenty aplikacji

Yii posiada podstawowe komponenty aplikacji ze stałymi ID oraz domyślną ich konfiguracją. Dla przykładu, komponent yii\web\Application::request jest używany do zbierania informacji na temat żądania użytkownika oraz przekazanie go do route'a; yii\base\Application::db reprezentuje połączenie z bazą danych, dzięki któremu możesz wykonywać zapytania do bazy. Z pomocą tych podstawowych komponentów aplikacja jest w stanie obsłużyć żądania użytkowników.

Poniżej znajduje się lista predefiniowanych podstawowych komponentów aplikacji. Możesz je konfigurować lub zmieniać, tak jak z normalnymi komponentami. Podczas konfigurowania podstawowych komponentów aplikacji, w przypadku nie podania klasy, zostanie użyta klasa domyślna.