From fe71bc38af6155ab31c5353ada33fd6ccdc402eb Mon Sep 17 00:00:00 2001 From: Alexander Makarov Date: Fri, 12 Sep 2014 02:34:33 +0400 Subject: [PATCH] Edited Russian guide sections about caching and autoloading --- docs/guide-ru/caching-overview.md | 12 ++-- docs/guide-ru/caching-page.md | 26 ++++---- docs/guide-ru/concept-aliases.md | 95 +++++++++++++++------------- docs/guide-ru/concept-autoloading.md | 85 +++++++++++++++---------- 4 files changed, 119 insertions(+), 99 deletions(-) diff --git a/docs/guide-ru/caching-overview.md b/docs/guide-ru/caching-overview.md index 3794843ce3..c99720aa7d 100644 --- a/docs/guide-ru/caching-overview.md +++ b/docs/guide-ru/caching-overview.md @@ -1,15 +1,15 @@ Кэширование -======= +========== Кэширование — это простой и эффективный способ повысить производительность веб-приложения. Сохраняя относительно статичные данные в кэше и извлекая их из кэша, когда потребуется, мы экономим время, затрачиваемое на генерацию данных с нуля каждый раз. -Кэширование может использоваться на различных уровнях веб-приложения. На стороне сервера, на более низшем уровне мы -используем кэширование для хранения основных данных, таких как список последних статьей запрашиваемых из базы данных; -и на более высоком уровне, кэш может использоваться для хранения фрагментов или целых веб-страниц, например как результат -рендеринга последних статьей. На стороне клиента может использоваться HTTP-кэширование, чтобы сохранить содержимое -недавно посещенных страниц в кэше браузера. +Кэширование может использоваться на различных уровнях и в различных местах веб-приложения. На стороне сервера, на более +низком уровне мы используем кэширование для хранения основных данных, таких как список последних полученных из базы +данных статьей. На более высоком уровне кэш может использоваться для хранения фрагментов или целых веб-страниц. Таких, +например, как результат рендеринга последних статьей. На стороне клиента для сохранения содержимого недавно посещенных +страниц в кэше браузера может использоваться HTTP-кэширование. Yii поддерживает все эти механизмы кэширования: diff --git a/docs/guide-ru/caching-page.md b/docs/guide-ru/caching-page.md index 80f093238e..862b566bca 100644 --- a/docs/guide-ru/caching-page.md +++ b/docs/guide-ru/caching-page.md @@ -1,11 +1,11 @@ Кэширование страниц -============ +================= -Кэширование страниц — это кэширование всего содержимого страницы на стороне сервера. Позже когда эта страница +Кэширование страниц — это кэширование всего содержимого страницы на стороне сервера. Позже, когда эта страница будет снова запрошена, сервер вернет её из кэша вместо того что бы генерировать её заново. -Кэширование страниц осуществляется при помощи [[yii\filters\PageCache]] и [фильтра действия](structure-filters.md). -Это может быть использовано в классе контроллера как показано ниже: +Кэширование страниц осуществляется при помощи [фильтра действия](structure-filters.md) [[yii\filters\PageCache]] и +может быть использовано в классе контроллера следующим образом: ```php public function behaviors() @@ -27,14 +27,14 @@ public function behaviors() } ``` -Приведенный выше код устанавливает, что кэширования страницы должно использоваться только для `index` действия; контент -этой страницы должен быть закэширован не более чем на 60 секунд и должен будет измениться на текущий язык приложения; -и эта кэшированная страница должна быть признана просроченной, если общее количество постов было изменено. +Приведённый код задействует кэширование только для действия `index`. Содержимое страницы кешируется максимум на 60 секунд +и варьируется в зависимости от текущего языка приложения. Кэшированная страница должна быть признана просроченной, если +общее количество постов изменилось. -Как вы можете видеть, кэширование страниц очень похоже на [кэширования фрагмента](caching-fragment.md). Оба этих варианта -поддерживают параметры: `duration` (продолжительность), `dependencies` (зависимости), `variations` (вариации), и `enabled` -(включения). Их главное отличие заключается в том что кэширования страницы реализована как -[фильтр действия](structure-filters.md) а кэширования фрагмента как [виджет](structure-widgets.md). +Кэширование страниц очень похоже на [кэширования фрагментов](caching-fragment.md). В обоих случаях поддерживаются параметры +`duration` (продолжительность), `dependencies` (зависимости), `variations` (вариации), и `enabled` (включен). Главное +отличие заключается в том, что кэширование страницы реализовано в виде [фильтра действия](structure-filters.md), +а кэширование фрагмента в виде [виджета](structure-widgets.md). -Вы можете использовать [кэширования фрагмента](caching-fragment.md), a также -[динамический контент](caching-fragment.md#dynamic-content) вместе с кэшированием страницы. +Вы можете использовать вместе [кэширование фрагмента](caching-fragment.md), +[динамическое содержимое](caching-fragment.md#dynamic-content) и кэширование страницы. diff --git a/docs/guide-ru/concept-aliases.md b/docs/guide-ru/concept-aliases.md index 15e3e1cf72..41e6150077 100644 --- a/docs/guide-ru/concept-aliases.md +++ b/docs/guide-ru/concept-aliases.md @@ -1,39 +1,42 @@ Псевдонимы -======= +========= -Псевдонимы используются для представления путей к файлам или для представления URL адресов с целью того, чтобы не приходилось полностью прописывать пути к файлам или полные URL адреса. -Псевдоним должен начинаться со знака '@', чтобы не перепутать его с адресом файла или с URL адресом. -Например псевдоним '@yii' указывает на папку, в которую был установлен Yii framework, а псевдоним '@web' представляет собой базовый, основной URL адрес (base URL) текущего приложения. +Псевдонимы используются для обозначения путей к файлам или URL адресов и помогают избежать использования абсолютных путей +или URL в коде. Для того, чтобы не перепутать псевдоним с обыным путём к файлу или URL, должен начинаться с `@`. В Yii +имеется множество заранее определённых псевдонимов. Например, `@yii` указывает на директорию, в которую был установлен +Yii framework, а `@web` можно использовать для получения базового URL текущего приложения. Создание псевдонимов ----------------- +---------------------------------------------- -Для создания псевдонима пути к файлу или псевдонима какого либо URL адреса используется метод [[Yii::setAlias()]]. -Пример: +Для создания псевдонима пути к файлу или URL используется метод [[Yii::setAlias()]]: ```php // псевдоним пути к файлу Yii::setAlias('@foo', '/path/to/foo'); -// псевдоним URL адреса +// псевдоним URL Yii::setAlias('@bar', 'http://www.example.com'); ``` -> Примечание: псевдоним пути к файлу или псевдоним URL адреса могут указывать на НЕСУЩЕСТВУЮЩИЙ файл или интернет ресурс. +> Примечание: псевдоним пути к файлу или URL *не* обязательно указывает на существующий файл или ресурс. -Если вы создали псевдоним пути, то из него можно вывести производный путь(не вызывая [[Yii::setAlias()]]) с помощью добавления знака '/' с последующим указанием необходимого пути. Псевдонимы, созданные с помощью [[Yii::setAlias()]] называются *корневыми псевдонимами (root aliases)*, тогда как производные псевдонимы называются *производными псевдонимами (derived aliases)*. -Например, `@foo` - это корневой псевдоним, тогда как `@foo/bar/file.php` - это производный псевдоним. +Используя уже заданный псевдоним вы можете получить на основе него новый без вызова [[Yii::setAlias()]]. Сделать это +можно добавив в его конец `/`, за которым следует один или более сегментов пути. Псевдонимы, определённые при помощи +[[Yii::setAlias()]] являются *корневыми псевдонимами*, в то время как полученные из них называются *производными +псевдонимами*. К примеру, `@foo` является корневым псевдонимом, а `@foo/bar/file.php` — производным. -Вы можете создать новый псевдоним используя ранее созданный псевдоним (независимо от того корневой он или производный): +Вы можете задать новый псевдоним используя ранее созданный псевдоним (не важно, корневой он или производный): ```php Yii::setAlias('@foobar', '@foo/bar'); ``` -Корневые псевдонимы как правило создаются на этапе [предварительной загрузки (bootstrapping)](runtime-bootstrapping.md) stage. -Например вы можете вызвать [[Yii::setAlias()]] внутри [входного скрипта (entry script)](structure-entry-scripts.md). -Для удобства использования, в [приложении (Application)](structure-applications.md) предусмотрено свойство 'aliases' , в которое возможна запись, т.е. вы можете [изменить настройки](concept-configurations.md) вашего приложения как в нижеследующем примере: +Корневые псевдонимы, как правило, создаются на этапе [предварительной загрузки (bootstrapping)](runtime-bootstrapping.md). +Например, вы можете вызвать [[Yii::setAlias()]] в [входном скрипте](structure-entry-scripts.md). Для удобства, в +[приложении (Application)](structure-applications.md) предусмотрено свойство `aliases`, которое можно задать через +[конфигурацию приложения](concept-configurations.md): ```php return [ @@ -46,12 +49,11 @@ return [ ``` -Раскрытие Псевдонимов ------------------ +Преобразование псевдонимов +---------------------------------------------------- -Метод [[Yii::getAlias()]] раскрывает корневой псевдоним в путь к файлу или в URL, который изначально был скрыт за псевдонимом. -Этот же метод используется для раскрытия производных псевдонимов в полный путь. -Пример: +Метод [[Yii::getAlias()]] преобразует корневой псевдоним в путь к файлу или URL который этот псевдоним представляет. +Этот же метод может работать и с производными псевдонимами: ```php echo Yii::getAlias('@foo'); // выведет: /path/to/foo @@ -59,13 +61,13 @@ echo Yii::getAlias('@bar'); // выведет: http://www.example. echo Yii::getAlias('@foo/bar/file.php'); // выведет: /path/to/foo/bar/file.php ``` -При раскрытии производных псевдонимов происходит раскрытие корневого псевдонима, с которого начинался псевдоним. +Путь или URL, представленный производным псевдонимом определяется путём замены в нём части, соответствующей корневому +псевдониму, на соответствующий ему путь или URL. -> Примечание: Метод [[Yii::getAlias()]] не проверяет фактическое существование формируемого пути к файлу или URL адреса. +> Примечание: Метод [[Yii::getAlias()]] не проверяет фактического существования получаемого пути или URL. -Корневой псевдоним может включать в себя знаки '/'. Метод [[Yii::getAlias()]] -корректно определит какая часть ссылки является корневой. -Пример: +Корневой псевдоним может содержать знаки '/'. При этом метод [[Yii::getAlias()]] корректно определит, какая часть +псевдонима является корневой и верно сформирует путь или URL: ```php Yii::setAlias('@foo', '/path/to/foo'); @@ -74,13 +76,15 @@ Yii::getAlias('@foo/test/file.php'); // выведет: /path/to/foo/test/file. Yii::getAlias('@foo/bar/file.php'); // выведет: /path2/bar/file.php ``` -Если не указать `@foo/bar` в качестве корневого псевдонима, последнее выражение выведет `/path/to/foo/bar/file.php`. +Если бы `@foo/bar` не является корневым псевдонимом, последняя строка вывела бы `/path/to/foo/bar/file.php`. Использование псевдонимов -------------- +------------------------------------------------ -Псевдонимы распознаются во многих частях Yii без необходимости вызова [[Yii::getAlias()]] для раскрытия псевдонимов. Например, [[yii\caching\FileCache::cachePath]] принимает в качестве аргумента как обычный путь к файлу, так и псевдоним, благодаря тому, что псевдонимы начинаются со знака '@'. +Псевдонимы распознаются во многих частях Yii без необходимости предварительно вызывать [[Yii::getAlias()]] для +получения пути или URL. Например, [[yii\caching\FileCache::cachePath]] принимает как обычный путь к файлу, так и +псевдоним пути благодаря префиксу `@`, который позволяет их различать. ```php use yii\caching\FileCache; @@ -90,32 +94,33 @@ $cache = new FileCache([ ]); ``` -Для того чтобы узнать, поддерживает ли необходимый вам метод или свойство класса псевдонимы в качестве аргументов обратитесь к документации API. +Для того чтобы узнать, поддерживает ли метод или свойство псевдонимы, обратитесь к документации API. -Системные псевдонимы ------------------- +Заранее определённые псевдонимы +---------------------------------------------------------- -Системные псевдонимы Yii включают в себя часто используемые пути к файлам и URL адреса. -Список системных псевдонимов Yii: +В Yii заранее определны псевдонимы для часто используемых путей к файлам и URL: -- `@yii`: папка, в которой находится файл `BaseYii.php` (директория фреймворка). -- `@app`: [[yii\base\Application::basePath|base path]] текущего приложения. -- `@runtime`: [[yii\base\Application::runtimePath|runtime path]] текущего приложения. -- `@vendor`: [[yii\base\Application::vendorPath|Composer vendor directory]. -- `@webroot`: папка Web root текущего Web приложения. -- `@web`: базовый URL (base URL) текущего приложения. +- `@yii`: директория, в которой находится файл `BaseYii.php` (директория фреймворка). +- `@app`: [[yii\base\Application::basePath|базовый путь]] текущего приложения. +- `@runtime`: [[yii\base\Application::runtimePath|директория runtime]] текущего приложения. +- `@vendor`: [[yii\base\Application::vendorPath|директория vendor Composer]. +- `@webroot`: вебрут текущего веб приложения (там где `index.php`). +- `@web`: базовый URL текущего приложения. -Псевдоним `@yii` создается при включении файла `Yii.php` во [входной скрипт (entry script)](structure-entry-scripts.md), -остальные псевдонимы создаются в конструкторе приложения в момент применения [конфигурации](concept-configurations.md). +Псевдоним `@yii` задаётся в момент подключения файла `Yii.php` в [входном скрипте](structure-entry-scripts.md). +Остальные псевдонимы задаются в конструкторе приложения в момент применения [конфигурации](concept-configurations.md). Псевдонимы расширений ------------------ +------------------------------------------------ -Для каждого [расширения](structure-extensions.md), устанавливаемого через Composer автоматически создается псевдоним. -Имя псевдонима расширения соответствует корневому пространству имен, которое указано в файле `composer.json` расширения. Данный псевдоним указывает на корневую папку расширения. -Например, если вы установите расширение `yiisoft/yii2-jui`, то для вас автоматически станет доступен псевдоним `@yii/jui`, создание которого будет происходить на этапе [первоначальной загрузки (bootstrapping)](runtime-bootstrapping.md) следующим образом: +Для каждого [расширения](structure-extensions.md), устанавливаемого через Composer, автоматически задаётся псевдоним. +Его имя соответствует корневому пространству имён расширения в соответствии с его `composer.json`. Псевдоним представляет +путь к корневой директории пакета. Например, если вы установите расширение `yiisoft/yii2-jui`, то вам автоматически станет +доступен псевдоним `@yii/jui`. Он создаётся на этапе [первоначальной загрузки (bootstrapping)](runtime-bootstrapping.md) +примерно так: ```php Yii::setAlias('@yii/jui', 'VendorPath/yiisoft/yii2-jui'); diff --git a/docs/guide-ru/concept-autoloading.md b/docs/guide-ru/concept-autoloading.md index 46352f40df..0acdbba074 100644 --- a/docs/guide-ru/concept-autoloading.md +++ b/docs/guide-ru/concept-autoloading.md @@ -1,77 +1,92 @@ Автозагрузка классов ================= -Для подключения и загрузки классов в Yii используется [автозагрузка классов](http://www.php.net/manual/ru/language.oop5.autoload.php). Автозагрузчик классов в Yii совместим со стандартом автозагрузки [PSR-4](https://github.com/php-fig/fig-standards/blob/master/proposed/psr-4-autoloader/psr-4-autoloader.md) и работает быстро. - -Автозагрузчик устанавливается когда вы включаете файл `Yii.php` в свой скрипт. - -> Примечание: Для простоты повествования мы будем говорить только об автозагрузке классов. Стоит отметить, что нижеприведенный способ может быть применен не только для автозагрузки классов, но и для автозагрузки интерфейсов(interface) и трейтов(traits). - +Поиск и подключение файлов классов в 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 вам нужно соблюсти два правила при создании и именовании классов: +При использовании автозагрузчика классов Yii следует соблюдать два простых правила создания и именования классов: -* Каждый класс должен принадлежать определенному пространству имён (прим. `foo\bar\MyClass`). -* Каждый класс должен находиться в отдельном файле, путь к которому будет определяться по следующему правилу: +* Каждый класс должен принадлежать пространству имён (то есть `foo\bar\MyClass`). +* Каждый класс должен находиться в отдельном файле, путь к которому определятся следующим правилом: ```php -// $className - это полное имя класса, начинающееся с обратного слэша, т.е. \ +// $className — это абсолютное имя класса, начинающееся с "\" $classFile = Yii::getAlias('@' . str_replace('\\', '/', $className) . '.php'); ``` -Например, если полное имя класса `foo\bar\MyClass`, то [псевдоним пути(alias)](concept-aliases.md) данного файла будет -`@foo/bar/MyClass.php`. Для того, чтобы данный псевдоним превратился в путь файла в файловой системе нужно чтобы либо `@foo` либо `@foo/bar` был [корневым псевдонимом(root alias)](concept-aliases.md#defining-aliases). +Например, если абсолютное имя класса `foo\bar\MyClass`, то [псевдоним пути](concept-aliases.md) данного файла будет +`@foo/bar/MyClass.php`. Для того, чтобы данный псевдоним можно было преобразовать в путь к файлу, необходимо чтобы +либо `@foo` либо `@foo/bar` являлся [корневым псевдонимом](concept-aliases.md#defining-aliases). -При использовании [простого шаблона приложения (Basic Application Template)](start-basic.md), вы можете хранить свои классы в пространствах имен ниже `app`, тогда вам не понадобится указывать новый псевдоним пути для автозагрузки вашего класса. Это работает потому что -`@app` является [системным псевдонимом](concept-aliases.md#predefined-aliases), а такое имя класса как `app\components\MyClass` -преобразуется в путь -`папкавашегоприложения/components/MyClass.php`. +При использовании [шаблона приложения basic](start-basic.md) вы можете хранить свои классы в пространстве имён `app`. +В этом случае они будут загружаться автоматически без создания нового псевдонима. Это работает потому как `@app` +является [заранее определённым псевдонимом](concept-aliases.md#predefined-aliases) и такое имя класса как +`app\components\MyClass` в соответствии с описанным выше алготимом преобразуется в путь +`директорияПриложения/components/MyClass.php`. - -В [шаблоне продвинутого приложения (Advanced Application Template)](tutorial-advanced-app.md), каждый уровень приложения обладает собственным корневым псевдонимом. Например, для front-end части корневым псевдонимом является `@frontend`, а для back-end части `@backend`. Это позволяет включать классы front-end части в пространство имен(namespace) ниже 'frontend', а для back-end части ниже 'backend'. При таком подходе ваши классы будут автоматически загружены автозагрузчиком Yii. +В [шаблоне приложения advanced](tutorial-advanced-app.md) каждый уровень приложения обладает собственным корневым +псевдонимом. Например, для frontend корневым псевдонимом является `@frontend`, а для backend — `@backend`. Это позволяет +разместить классы frontend в пространство имён `frontend`, а классы backend в пространство имён `backend`. При этом +классы будут загружены автоматически. Карта классов ---------- +--------------------------------- -Автозагрузчик Yii обладает возможностью, которая называется *карта классов*.Эта возможность позволяет указывать где необходимо искать классы в зависимости от имени файла. -Прежде чем загрузить файл автозагрузчик проверяет есть ли правила для файла в карте классов. Если файл находится в карте классов, то данный файл будет загружен напрямую без дальнейших проверок. -Это позволяет существенно ускорить автозагрузку. Все базовые классы Yii загружаются именно этим способом. +Автозагрузчик Yii поддерживает *карту классов*. Эта возможность позволяет указать путь к файлу для каждого имени класса. +При загрузке класса автозагрузчик проверяет наличие класса в карте. Если он там есть, соответствующий файл будет загружен +напрямую без каких-либо дополнительных проверок. Это делает автозагрузку очень быстрой. Все классы самого фреймворка +загружаются именно этим способом. -Пример добавления класса в карту классов `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) так как она должна быть готова до +использования классов. Использование других автозагрузчиков ------------------------ +------------------------------------------------------------------ -По причине того что Yii использует Composer в качестве менеджера зависимостей, рекомендуется дополнительно установить автозагрузчик Composer. Если вы использует какие то дополнительные библиотеки, в которых есть свои автозагрузчики, то автозагрузчики этих библиотек также нужно будет установить. +Так как Yii использует Composer в качестве менеджера зависимостей, рекомендуется дополнительно установить его автозагрузчик. +Если вы используете какие-либо сторонние библиотеки, в которых есть свои автозагрузчики, эти автозагрузчики также необходимо +установить. -В случаях использования дополнительных автозагрузчиков вместе с автозагрузчиком Yii, файл `Yii.php` должен быть подключен *после* установки всех дополнительных автозагрузчиков. В таком случае автозагрузчик Yii будет первым используемым автозагрузчиком из установленных при автозагрузке. Например нижеследующий код взят напрямую из [входного скрипта(entry script)](structure-entry-scripts.md) для [Basic Application Template](start-basic.md). Первая строчка устанавливает автозагрузчик Composer, а вторая устанавливает автозагрузчик Yii. +При использовании дополнительных автозагрузчиков файл `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. +Вы можете использовать автозагрузчик Composer без автозагрузчика Yii. Однако, скорость автозагрузки в этом случае +может уменьшится. Также вам будет необходимо сдедовать правилам автозагрузчика Composer. -> Информация: Если вы не хотите использовать автозагрузчик Yii, то вам нужно будет создать свою версию файла `Yii.php` - и подключить его к [входному скрипту(entry script)](structure-entry-scripts.md). +> Информация: Если вы не хотите использовать автозагрузчик Yii, создайте свою версию файла `Yii.php` + и подключите его в [входном скрипте](structure-entry-scripts.md). Автозагрузка классов расширений ------------------------------ +------------------------------------------------------------------- -Автозагрузчик Yii позволяет автоматически загружать классы [расширений](structure-extensions.md). Единственное правило в таком случае - расширение должно правильно указывать раздел 'autoload' в своем файле 'composer.json'. Более подробную информацию о том как правильно указать раздел 'autoload' вы можете узнать в [официальной документации Composer](https://getcomposer.org/doc/04-schema.md#autoload). - -Если вы не используете автозагрузчик Yii, то классы расширений могут быть автоматически загружены с помощью автозагрузчика Composer. +Автозагрузчик Yii может автоматически загружать классы [расширений](structure-extensions.md) в том случае, если соблюдается +единственное правило. Расширение должно правильно описать раздел 'autoload' в файле 'composer.json'. Более подробно об +этом можно узнать из [официальной документации Composer](https://getcomposer.org/doc/04-schema.md#autoload). +Если вы не используете автозагрузчик Yii, то классы расширений могут быть автоматически загружены с помощью +автозагрузчика Composer.