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 połączenia z bazą danych lub \Yii::$app->cache
do uzyskania
dostępu do pamięci podręcznej 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 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;
},
],
]
Informacja: 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.
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 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`
],
],
]
Yii posiada podstawowe komponenty aplikacji ze stałymi ID oraz domyślną ich konfiguracją. Dla przykładu, komponent request jest używany do zbierania informacji na temat żądania użytkownika oraz przekazanie go do route'a; 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.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.