Alexander Makarov
9 years ago
2 changed files with 114 additions and 0 deletions
@ -0,0 +1,76 @@
|
||||
Klasy pomocnicze |
||||
================ |
||||
|
||||
> Note: Ta sekcja jest w trakcie tworzenia. |
||||
|
||||
Yii jest wyposażone w wiele klas upraszczających pisanie często wykorzystywanych zadań w kodzie, takich jak manipulowanie ciągami znaków bądź tablicami, generowanie kodu HTML, itp. |
||||
Te pomocnicze klasy znajdują się w przestrzeni nazw `yii\helpers` i wszystkie są klasami statycznymi (czyli zawierają wyłącznie statyczne właściwości i nie powinny być tworzone ich |
||||
instancje). |
||||
|
||||
Aby skorzystać z klasy pomocnicznej, należy bezpośrednio wywołać jedną z jej statycznych metod, jak w przykładzie poniżej: |
||||
|
||||
```php |
||||
use yii\helpers\Html; |
||||
|
||||
echo Html::encode('Test > test'); |
||||
``` |
||||
|
||||
> Note: W celu zapewnienia możliwości [dostosowania klas pomocniczych do własnych potrzeb](#customizing-helper-classes), Yii rozdziela każdą z ich wbudowanych wersji |
||||
na dwie klasy: podstawę (np. `BaseArrayHelper`) i klasę właściwą (np. `ArrayHelper`). Kiedy chcesz użyć klasy pomocnicznej, powinieneś korzystać wyłącznie z jej właściwej wersji |
||||
i nigdy nie używać bezpośrednio podstawy. |
||||
|
||||
|
||||
Wbudowane klasy pomocnicze |
||||
-------------------------- |
||||
|
||||
Poniższe wbudowane klasy pomocnicze dostępne są w każdym wydaniu Yii: |
||||
|
||||
- [ArrayHelper](helper-array.md) |
||||
- Console |
||||
- FileHelper |
||||
- FormatConverter |
||||
- [Html](helper-html.md) |
||||
- HtmlPurifier |
||||
- Imagine (poprzez rozszerzenie yii2-imagine) |
||||
- Inflector |
||||
- Json |
||||
- Markdown |
||||
- StringHelper |
||||
- [Url](helper-url.md) |
||||
- VarDumper |
||||
|
||||
|
||||
Dostosowywanie klas pomocniczych do własnych potrzeb <span id="customizing-helper-classes"></span> |
||||
---------------------------------------------------- |
||||
|
||||
Aby zmodyfikować wbudowaną klasę pomocniczną (np. [[yii\helpers\ArrayHelper]]), należy stworzyć nową klasę rozszerzającą odpowiednią podstawę |
||||
(np. [[yii\helpers\BaseArrayHelper]]) i nazwać ją identycznie jak jej wersja właściwa (np. [[yii\helpers\ArrayHelper]]), łącznie z zachowaniem jej przestrzeni nazw. |
||||
Ta klasa może następnie zostać użyta do zastąpienia oryginalnej implementacji we frameworku. |
||||
|
||||
Poniższy przykład ilustruje w jaki sposób zmodyfikować metodę [[yii\helpers\ArrayHelper::merge()|merge()]] klasy [[yii\helpers\ArrayHelper]]: |
||||
|
||||
```php |
||||
<?php |
||||
|
||||
namespace yii\helpers; |
||||
|
||||
class ArrayHelper extends BaseArrayHelper |
||||
{ |
||||
public static function merge($a, $b) |
||||
{ |
||||
// zmodyfikowana wersja metody |
||||
} |
||||
} |
||||
``` |
||||
|
||||
Klasę należy zapisać w pliku o nazwie `ArrayHelper.php`, który może znajdować się w dowolnym odpowiednim folderze, np. `@app/components`. |
||||
|
||||
Następnie dopisujemy poniższą linijkę kodu w [skrypcie wejściowym](structure-entry-scripts.md) aplikacji po fragmencie dołączającym plik `yii.php`, |
||||
dzięki czemu [autoloader klas Yii](concept-autoloading.md) załaduje zmodyfikowaną wersję klasy pomocniczej zamiast oryginalnej: |
||||
|
||||
```php |
||||
Yii::$classMap['yii\helpers\ArrayHelper'] = '@app/components/ArrayHelper.php'; |
||||
``` |
||||
|
||||
Należy pamiętać o tym, że modyfikowanie klasy pomocniczej jest użyteczne tylko w przypadku, gdy chcemy zmienić domyślny sposób działania jej metody. |
||||
W przypadku dodawania do aplikacji dodatkowych funkcjonalności, lepszym pomysłem jest stworzenie całkowicie nowej, osobnej klasy pomocniczej. |
@ -0,0 +1,38 @@
|
||||
Bootstrapping |
||||
============= |
||||
|
||||
Bootstrapping to proces przygotowania środowiska działania aplikacji przed jej uruchomieniem, w celu przyjęcia i przetworzenia przychodzącego żądania. |
||||
Mechanizm ten zachodzi w dwóch miejscach: [skrypcie wejściowym](structure-entry-scripts.md) i w samej [aplikacji](structure-applications.md). |
||||
|
||||
[Skrypt wejściowy](structure-entry-scripts.md) zajmuje się rejestracją autoloaderów klas dla poszczególnych bibliotek, wliczając w to autoloader Composera |
||||
poprzez jego plik `autoload.php` i autoloader Yii poprzez plik klasy `Yii`. Następnie skrypt wejściowy ładuje [konfigurację](concept-configurations.md) |
||||
i tworzy instancję [aplikacji](structure-applications.md). |
||||
|
||||
W konstruktorze aplikacji zachodzi następujący proces bootstrappingu: |
||||
|
||||
1. Wywołanie metody [[yii\base\Application::preInit()|preInit()]], która konfiguruje niektóre z właściwości aplikacji o wysokim priorytecie, |
||||
takich jak [[yii\base\Application::basePath|basePath]]. |
||||
2. Rejestracja [[yii\base\Application::errorHandler|obsługi błędów]]. |
||||
3. Inicjalizacja właściwości aplikacji za pomocą utworzonej konfiguracji. |
||||
4. Wywołanie metody [[yii\base\Application::init()|init()]], która uruchamia proces bootstrappingu komponentów za pomocą metody |
||||
[[yii\base\Application::bootstrap()|bootstrap()]]. |
||||
- Załadowanie pliku manifestu dla rozszerzeń `vendor/yiisoft/extensions.php`. |
||||
- Utworzenie i uruchomienie [komponentów bootstrapowych](structure-extensions.md#bootstrapping-classes) zadeklarowanych przez rozszerzenia. |
||||
- Utworzenie i uruchomienie [komponentów aplikacji](structure-application-components.md) i/lub [modułów](structure-modules.md), zadeklarowanych |
||||
we [właściwości bootstrapowej](structure-applications.md#bootstrap) aplikacji. |
||||
|
||||
Ponieważ proces bootstrappingu jest wykonywany przed obsługą *każdego* żądania, niezwykle istotnym jest, aby był lekki i zoptymalizowany tak bardzo, jak to tylko możliwe. |
||||
|
||||
Należy unikać rejestrowania zbyt dużej ilości komponentów bootstrappingowych. Wymagane jest to tylko w przypadku, gdy taki komponent powinien uczestniczyć |
||||
w całym cyklu życia obsługi przychodzącego żądania. Dla przykładu, jeśli moduł wymaga zarejestrowania dodatkowych zasad przetwarzania adresów URL, powinien być wymieniony |
||||
we [właściwości bootstrapowej](structure-applications.md#bootstrap), aby nowe zasady mogły być wykorzystane do przetworzenia żądania. |
||||
|
||||
W środowisku produkcyjnym zaleca się zastosowanie pamięci podręcznej kodu, takiej jak [PHP OPcache] lub [APC], aby zminimalizować czas konieczny do załadowania i przetworzenia |
||||
plików PHP. |
||||
|
||||
[PHP OPcache]: http://php.net/manual/en/intro.opcache.php |
||||
[APC]: http://php.net/manual/en/book.apc.php |
||||
|
||||
Niektóre duże aplikacje posiadają bardzo skomplikowaną [konfigurację](concept-configurations.md), składającą się z wielu mniejszych plików konfiguracyjnych. |
||||
W takim przypadku zalecane jest zapisanie w pamięci całej wynikowej tablicy konfiguracji i załadowanie jej stamtąd bezpośrednio przed utworzeniem instancji aplikacji |
||||
w skrypcie wejściowym. |
Loading…
Reference in new issue