From 1a65c718c148de16adc7a111df300707a5de9715 Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:38:28 +0300 Subject: [PATCH 01/11] Create concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 docs/guide-uk/concept-autoloading.md diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md new file mode 100644 index 0000000000..367555ddae --- /dev/null +++ b/docs/guide-uk/concept-autoloading.md @@ -0,0 +1,2 @@ +Автозавантаження класів +================= From a7f157c47827584825557f3cef7e3ff6b9bf87fd Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:40:38 +0300 Subject: [PATCH 02/11] Update concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 87 ++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 367555ddae..664aae2b79 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -1,2 +1,89 @@ Автозавантаження класів ================= +Пошук і підключення файлів класів в Yii реалізовано за допомогою +[автозавантаження класів](http://www.php.net/manual/ru/language.oop5.autoload.php). Фреймворк надає свій швидкий сумісний з [PSR-4](https://github.com/php-fig/fig-standards/blob/master/proposed/psr-4-autoloader/psr-4-autoloader.md) +автозавантажувач, який встановлюється в момент підключення `Yii.php`. + +> Примітка: Для простоти оповіді, в цьому розділі ми будемо говорити тільки про автозавантаження класів. Тим не менш, все описане застосовно до інтерфейсів і трейтам. + +Как использовать автозагрузчик Yii +-------------------------------------------------------------- + +При использовании автозагрузчика классов Yii следует соблюдать два простых правила создания и именования классов: + +* Каждый класс должен принадлежать пространству имён (то есть `foo\bar\MyClass`). +* Каждый класс должен находиться в отдельном файле, путь к которому определятся следующим правилом: + +```php +// $className — это абсолютное имя класса, начинающееся с "\" +$classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); +``` + +Например, если абсолютное имя класса `foo\bar\MyClass`, то [псевдоним пути](concept-aliases.md) данного файла будет +`@foo/bar/MyClass.php`. Для того, чтобы данный псевдоним можно было преобразовать в путь к файлу, необходимо чтобы +либо `@foo` либо `@foo/bar` являлся [корневым псевдонимом](concept-aliases.md#defining-aliases). + +При использовании [шаблона приложения basic](start-basic.md) вы можете хранить свои классы в пространстве имён `app`. +В этом случае они будут загружаться автоматически без создания нового псевдонима. Это работает потому как `@app` +является [заранее определённым псевдонимом](concept-aliases.md#predefined-aliases) и такое имя класса как +`app\components\MyClass` в соответствии с описанным выше алготимом преобразуется в путь +`директорияПриложения/components/MyClass.php`. + +В [шаблоне приложения advanced](tutorial-advanced-app.md) каждый уровень приложения обладает собственным корневым +псевдонимом. Например, для frontend корневым псевдонимом является `@frontend`, а для backend — `@backend`. Это позволяет +разместить классы frontend в пространство имён `frontend`, а классы backend в пространство имён `backend`. При этом +классы будут загружены автоматически. + + +Карта классов +--------------------------------- + +Автозагрузчик Yii поддерживает *карту классов*. Эта возможность позволяет указать путь к файлу для каждого имени класса. +При загрузке класса автозагрузчик проверяет наличие класса в карте. Если он там есть, соответствующий файл будет загружен +напрямую без каких-либо дополнительных проверок. Это делает автозагрузку очень быстрой. Все классы самого фреймворка +загружаются именно этим способом. + +Вы можете добавить класс в карту `Yii::$classMap` следующим образом: + +```php +Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; +``` + +Для указания путей к файлам классов можно использовать [псевдонимы](concept-aliases.md). Карту классов необходимо +сформировать в процессе [первоначальной загрузки](runtime-bootstrapping.md) так как она должна быть готова до +использования классов. + + +Использование других автозагрузчиков +------------------------------------------------------------------ + +Так как Yii использует Composer в качестве менеджера зависимостей, рекомендуется дополнительно установить его автозагрузчик. +Если вы используете какие-либо сторонние библиотеки, в которых есть свои автозагрузчики, эти автозагрузчики также необходимо +установить. + +При использовании дополнительных автозагрузчиков файл `Yii.php` должен быть подключен *после* их установки. Это позволит +автозагрузчику Yii первым пробовать загрузить класс. К примеру, приведённый ниже код взят из +[входного скрипта](structure-entry-scripts.md) [шаблона приложения basic](start-basic.md). Первая строка устанавливает +автозагрузчик Composer, а вторая — автозагрузчик Yii: + +```php +require(__DIR__ . '/../vendor/autoload.php'); +require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); +``` + +Вы можете использовать автозагрузчик Composer без автозагрузчика Yii. Однако, скорость автозагрузки в этом случае +может уменьшится. Также вам будет необходимо сдедовать правилам автозагрузчика Composer. + +> Информация: Если вы не хотите использовать автозагрузчик Yii, создайте свою версию файла `Yii.php` + и подключите его в [входном скрипте](structure-entry-scripts.md). + + +Автозагрузка классов расширений +------------------------------------------------------------------- + +Автозагрузчик Yii может автоматически загружать классы [расширений](structure-extensions.md) в том случае, если соблюдается +единственное правило. Расширение должно правильно описать раздел 'autoload' в файле 'composer.json'. Более подробно об +этом можно узнать из [официальной документации Composer](https://getcomposer.org/doc/04-schema.md#autoload). + +Если вы не используете автозагрузчик Yii, то классы расширений могут быть автоматически загружены с помощью +автозагрузчика Composer. From 86f9dab9612b4432d37825a65b05723fae93574d Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:42:38 +0300 Subject: [PATCH 03/11] Update concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 664aae2b79..0f5cc6933b 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -6,16 +6,16 @@ > Примітка: Для простоти оповіді, в цьому розділі ми будемо говорити тільки про автозавантаження класів. Тим не менш, все описане застосовно до інтерфейсів і трейтам. -Как использовать автозагрузчик Yii +Як використовувати автозавантажувач Yii -------------------------------------------------------------- -При использовании автозагрузчика классов Yii следует соблюдать два простых правила создания и именования классов: +При використанні автозавантажувач класів Yii слід дотримуватися два простих правила створення і іменування класів: -* Каждый класс должен принадлежать пространству имён (то есть `foo\bar\MyClass`). -* Каждый класс должен находиться в отдельном файле, путь к которому определятся следующим правилом: +* Кожен клас повинен належати простору імен (тобто `foo\bar\MyClass`). +* Кожен клас повинен знаходитися в окремому файлі, шлях до якого визначаться наступним правилом: ```php -// $className — это абсолютное имя класса, начинающееся с "\" +// $className — це абсолютне ім'я класу, що починається з "\" $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); ``` From 24a1e430fa7bbd15b5bd4101ea1451ea9ba908e5 Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:44:33 +0300 Subject: [PATCH 04/11] Update concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 0f5cc6933b..7d0315298f 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -19,9 +19,8 @@ $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); ``` -Например, если абсолютное имя класса `foo\bar\MyClass`, то [псевдоним пути](concept-aliases.md) данного файла будет -`@foo/bar/MyClass.php`. Для того, чтобы данный псевдоним можно было преобразовать в путь к файлу, необходимо чтобы -либо `@foo` либо `@foo/bar` являлся [корневым псевдонимом](concept-aliases.md#defining-aliases). +Наприклад, якщо абсолютне ім'я класу `foo\bar\MyClass`, то [псевдонім шляху](concept-aliases.md) даного файлу буде +`@foo/bar/MyClass.php`. Для того, щоб даний псевдонім можна було перетворити в шлях до файлу, необхідно щоб або `@foo` або `@foo/bar` був [кореневим псевдонімом](concept-aliases.md#defining-aliases). При использовании [шаблона приложения basic](start-basic.md) вы можете хранить свои классы в пространстве имён `app`. В этом случае они будут загружаться автоматически без создания нового псевдонима. Это работает потому как `@app` From 34dc564b48de97a11a4bf163ca585212e953a443 Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:47:33 +0300 Subject: [PATCH 05/11] Update concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 7d0315298f..1875663258 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -22,10 +22,10 @@ $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); Наприклад, якщо абсолютне ім'я класу `foo\bar\MyClass`, то [псевдонім шляху](concept-aliases.md) даного файлу буде `@foo/bar/MyClass.php`. Для того, щоб даний псевдонім можна було перетворити в шлях до файлу, необхідно щоб або `@foo` або `@foo/bar` був [кореневим псевдонімом](concept-aliases.md#defining-aliases). -При использовании [шаблона приложения basic](start-basic.md) вы можете хранить свои классы в пространстве имён `app`. -В этом случае они будут загружаться автоматически без создания нового псевдонима. Это работает потому как `@app` -является [заранее определённым псевдонимом](concept-aliases.md#predefined-aliases) и такое имя класса как -`app\components\MyClass` в соответствии с описанным выше алготимом преобразуется в путь +при використанні [шаблону додатку basic](start-basic.md) ви можете зберігати свої класи в просторі імен `app`. +В цьому випадку вони будуть завантажуватися автоматично без створення нового псевдоніма. Це працює тому як `@app` +є [заздалегідь певним псевдонімом](concept-aliases.md#predefined-aliases) і таке ім'я класу як +`app\components\MyClass` відповідно до описаного вище алготімом перетвориться в шлях `директорияПриложения/components/MyClass.php`. В [шаблоне приложения advanced](tutorial-advanced-app.md) каждый уровень приложения обладает собственным корневым From 6f3842a9e647b5b270ea8510b2c001112206e014 Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:49:26 +0300 Subject: [PATCH 06/11] Update concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 1875663258..85ca337fc2 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -28,10 +28,8 @@ $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); `app\components\MyClass` відповідно до описаного вище алготімом перетвориться в шлях `директорияПриложения/components/MyClass.php`. -В [шаблоне приложения advanced](tutorial-advanced-app.md) каждый уровень приложения обладает собственным корневым -псевдонимом. Например, для frontend корневым псевдонимом является `@frontend`, а для backend — `@backend`. Это позволяет -разместить классы frontend в пространство имён `frontend`, а классы backend в пространство имён `backend`. При этом -классы будут загружены автоматически. +В [шаблоне приложения advanced](tutorial-advanced-app.md) кожен рівень додатку володіє власним кореневим псевдонімом. Наприклад, для frontend кореневим псевдонімом є `@frontend`, а для backend — `@backend`. Це дозволяє +розмістити класи frontend в простір імен `frontend`, а класи backend в простір імен `backend`. При цьому класи будуть завантажені автоматично. Карта классов From 7b3f54bb35cc8c0d6db42f5a220b405ec50e84b3 Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:51:18 +0300 Subject: [PATCH 07/11] Update concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 85ca337fc2..32ab06d766 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -28,19 +28,19 @@ $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); `app\components\MyClass` відповідно до описаного вище алготімом перетвориться в шлях `директорияПриложения/components/MyClass.php`. -В [шаблоне приложения advanced](tutorial-advanced-app.md) кожен рівень додатку володіє власним кореневим псевдонімом. Наприклад, для frontend кореневим псевдонімом є `@frontend`, а для backend — `@backend`. Це дозволяє +В [шаблоні додатку advanced](tutorial-advanced-app.md) кожен рівень додатку володіє власним кореневим псевдонімом. Наприклад, для frontend кореневим псевдонімом є `@frontend`, а для backend — `@backend`. Це дозволяє розмістити класи frontend в простір імен `frontend`, а класи backend в простір імен `backend`. При цьому класи будуть завантажені автоматично. -Карта классов +Карта класів --------------------------------- -Автозагрузчик Yii поддерживает *карту классов*. Эта возможность позволяет указать путь к файлу для каждого имени класса. -При загрузке класса автозагрузчик проверяет наличие класса в карте. Если он там есть, соответствующий файл будет загружен -напрямую без каких-либо дополнительных проверок. Это делает автозагрузку очень быстрой. Все классы самого фреймворка -загружаются именно этим способом. +Автозавантажувач Yii підтримує *карту класів*. Ця можливість дозволяє вказати шлях до файлу для кожного імені класу. +При завантаженні класу автозавантажувач перевіряє наявність класу в карті. Якщо він там є, відповідний файл буде завантажений +безпосередньо без будь-яких додаткових перевірок. Це робить автозагрузку дуже швидкою. Всі класи самого фреймворка +завантажуються саме цим способом. -Вы можете добавить класс в карту `Yii::$classMap` следующим образом: +Ви можете додати клас в карту `Yii::$classMap` наступним чином: ```php Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; From 78b707eaac7c304ad62e3ecf2b008502fe2fdeb9 Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:53:54 +0300 Subject: [PATCH 08/11] Update concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 32ab06d766..15578084bc 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -40,15 +40,13 @@ $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); безпосередньо без будь-яких додаткових перевірок. Це робить автозагрузку дуже швидкою. Всі класи самого фреймворка завантажуються саме цим способом. -Ви можете додати клас в карту `Yii::$classMap` наступним чином: +Ви маєте можливість додати клас в карту `Yii::$classMap` наступним чином: ```php Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; ``` -Для указания путей к файлам классов можно использовать [псевдонимы](concept-aliases.md). Карту классов необходимо -сформировать в процессе [первоначальной загрузки](runtime-bootstrapping.md) так как она должна быть готова до -использования классов. +Для вказівки шляхів до файлів класів можна використовувати [псевдоніми](concept-aliases.md). Карту класів необхідно сформувати в процесі [первинного завантаження](runtime-bootstrapping.md) так як вона повинна бути готова до використання класів. Использование других автозагрузчиков From 69fd4280bc04e05275e830037ebefc6ef8f8d0c1 Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:56:05 +0300 Subject: [PATCH 09/11] Update concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 15578084bc..9fa2c3b523 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -49,17 +49,16 @@ Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php'; Для вказівки шляхів до файлів класів можна використовувати [псевдоніми](concept-aliases.md). Карту класів необхідно сформувати в процесі [первинного завантаження](runtime-bootstrapping.md) так як вона повинна бути готова до використання класів. -Использование других автозагрузчиков +Використання інших автозавантажувачів ------------------------------------------------------------------ -Так как Yii использует Composer в качестве менеджера зависимостей, рекомендуется дополнительно установить его автозагрузчик. -Если вы используете какие-либо сторонние библиотеки, в которых есть свои автозагрузчики, эти автозагрузчики также необходимо -установить. +Так як Yii використовує Composer в якості менеджера залежностей, рекомендується додатково встановити його автозавантажувач. +Якщо ви використовуєте які-небудь сторонні бібліотеки, в яких є свої Автозавантажувач, ці Автозавантажувач також необхідно +встановити. -При использовании дополнительных автозагрузчиков файл `Yii.php` должен быть подключен *после* их установки. Это позволит -автозагрузчику Yii первым пробовать загрузить класс. К примеру, приведённый ниже код взят из -[входного скрипта](structure-entry-scripts.md) [шаблона приложения basic](start-basic.md). Первая строка устанавливает -автозагрузчик Composer, а вторая — автозагрузчик Yii: +При використанні додаткових автозавантажувач файл `Yii.php` повинен бути підключений *після* їх установки. це дозволить +автозавантажувачу Yii першим пробувати завантажити клас. Приміром, наведений нижче код взятий з +[вхідного скрипта](structure-entry-scripts.md) [шаблону додатку basic](start-basic.md). Перший рядок встановлює автозавантажувач Composer, а друга - автозавантажувач Yii: ```php require(__DIR__ . '/../vendor/autoload.php'); From 925347ecf61ba2ebab95c9d2f8add8f2586756a6 Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:57:40 +0300 Subject: [PATCH 10/11] Update concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 9fa2c3b523..08e10c97ae 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -65,11 +65,10 @@ require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); ``` -Вы можете использовать автозагрузчик Composer без автозагрузчика Yii. Однако, скорость автозагрузки в этом случае -может уменьшится. Также вам будет необходимо сдедовать правилам автозагрузчика Composer. +Ви можете використовувати автозавантажувач Composer без автозавантажувач Yii. Однак, швидкість автозавантаження в цьому випадку може зменшиться. Також вам буде необхідно слідувати правилам автозавантажувача Composer. -> Информация: Если вы не хотите использовать автозагрузчик Yii, создайте свою версию файла `Yii.php` - и подключите его в [входном скрипте](structure-entry-scripts.md). +> Інформація: Якщо ви не хочете використовувати автозавантажувач Yii, створіть свою версію файлу `Yii.php` + і підключіть його в [вхідному скрипті](structure-entry-scripts.md). Автозагрузка классов расширений From e9b1e858d9dbba1d46b47507707a4bcba488cb15 Mon Sep 17 00:00:00 2001 From: Timur Melnikov Date: Fri, 24 Oct 2014 10:59:23 +0300 Subject: [PATCH 11/11] Update concept-autoloading.md --- docs/guide-uk/concept-autoloading.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/guide-uk/concept-autoloading.md b/docs/guide-uk/concept-autoloading.md index 08e10c97ae..501a6bc4bf 100644 --- a/docs/guide-uk/concept-autoloading.md +++ b/docs/guide-uk/concept-autoloading.md @@ -71,12 +71,9 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); і підключіть його в [вхідному скрипті](structure-entry-scripts.md). -Автозагрузка классов расширений +Автозагрузка класів розширень ------------------------------------------------------------------- -Автозагрузчик Yii может автоматически загружать классы [расширений](structure-extensions.md) в том случае, если соблюдается -единственное правило. Расширение должно правильно описать раздел 'autoload' в файле 'composer.json'. Более подробно об -этом можно узнать из [официальной документации Composer](https://getcomposer.org/doc/04-schema.md#autoload). +Автозавантажувач Yii може автоматично завантажувати класи [розширень](structure-extensions.md) в тому випадку, якщо дотримується єдине правило. Розширення повинно правильно описати розділ 'autoload' у файлі 'composer.json'. Більш докладно про це можна дізнатися з [офіційній документації Composer](https://getcomposer.org/doc/04-schema.md#autoload). -Если вы не используете автозагрузчик Yii, то классы расширений могут быть автоматически загружены с помощью -автозагрузчика Composer. +Якщо ви не використовуєте автозавантажувач Yii, то класи розширень можуть бути автоматично завантажені з допомогою автозавантажувач Composer.