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.
 
 
 
 
 

7.8 KiB

Автозавантаження класів

Пошук і підключення файлів класів в Yii реалізовано за допомогою автозавантаження класів. Фреймворк надає свій швидкий сумісний з PSR-4 автозавантажувач, який встановлюється в момент підключення Yii.php.

Примітка: Для простоти оповіді, в цьому розділі ми будемо говорити тільки про автозавантаження класів. Тим не менш, все описане застосовно до інтерфейсів і трейтам.

Як використовувати автозавантажувач Yii

При використанні автозавантажувач класів Yii слід дотримуватися два простих правила створення і іменування класів:

  • Кожен клас повинен належати простору імен (тобто foo\bar\MyClass).
  • Кожен клас повинен знаходитися в окремому файлі, шлях до якого визначаться наступним правилом:
// $className — це абсолютне ім'я класу, що починається з "\"
$classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php');

Наприклад, якщо абсолютне ім'я класу foo\bar\MyClass, то псевдонім шляху даного файлу буде @foo/bar/MyClass.php. Для того, щоб даний псевдонім можна було перетворити в шлях до файлу, необхідно щоб або @foo або @foo/bar був кореневим псевдонімом.

при використанні шаблону додатку basic ви можете зберігати свої класи в просторі імен app. В цьому випадку вони будуть завантажуватися автоматично без створення нового псевдоніма. Це працює тому як @app є заздалегідь певним псевдонімом і таке ім'я класу як app\components\MyClass відповідно до описаного вище алготімом перетвориться в шлях директорияПриложения/components/MyClass.php.

В шаблоні додатку advanced кожен рівень додатку володіє власним кореневим псевдонімом. Наприклад, для frontend кореневим псевдонімом є @frontend, а для backend — @backend. Це дозволяє розмістити класи frontend в простір імен frontend, а класи backend в простір імен backend. При цьому класи будуть завантажені автоматично.

Карта класів

Автозавантажувач Yii підтримує карту класів. Ця можливість дозволяє вказати шлях до файлу для кожного імені класу. При завантаженні класу автозавантажувач перевіряє наявність класу в карті. Якщо він там є, відповідний файл буде завантажений безпосередньо без будь-яких додаткових перевірок. Це робить автозагрузку дуже швидкою. Всі класи самого фреймворка завантажуються саме цим способом.

Ви маєте можливість додати клас в карту Yii::$classMap наступним чином:

Yii::$classMap['foo\bar\MyClass'] = 'path/to/MyClass.php';

Для вказівки шляхів до файлів класів можна використовувати псевдоніми. Карту класів необхідно сформувати в процесі первинного завантаження так як вона повинна бути готова до використання класів.

Використання інших автозавантажувачів

Так як Yii використовує Composer в якості менеджера залежностей, рекомендується додатково встановити його автозавантажувач. Якщо ви використовуєте які-небудь сторонні бібліотеки, в яких є свої Автозавантажувач, ці Автозавантажувач також необхідно встановити.

При використанні додаткових автозавантажувач файл Yii.php повинен бути підключений після їх установки. це дозволить автозавантажувачу Yii першим пробувати завантажити клас. Приміром, наведений нижче код взятий з вхідного скрипта шаблону додатку basic. Перший рядок встановлює автозавантажувач Composer, а друга - автозавантажувач Yii:

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

Ви можете використовувати автозавантажувач Composer без автозавантажувач Yii. Однак, швидкість автозавантаження в цьому випадку може зменшиться. Також вам буде необхідно слідувати правилам автозавантажувача Composer.

Інформація: Якщо ви не хочете використовувати автозавантажувач Yii, створіть свою версію файлу Yii.php і підключіть його в вхідному скрипті.

Автозагрузка классов расширений

Автозагрузчик Yii может автоматически загружать классы расширений в том случае, если соблюдается единственное правило. Расширение должно правильно описать раздел 'autoload' в файле 'composer.json'. Более подробно об этом можно узнать из официальной документации Composer.

Если вы не используете автозагрузчик Yii, то классы расширений могут быть автоматически загружены с помощью автозагрузчика Composer.