Часто бывает нужно использовать сторонние библиотеки классов. Или какой то свой код хочется вынести в отдельный класс. Конечно правильнее использовать для этого расширения и делать это через композер. Но на дешевом шаред хостинге о доступе к консоли речи не идет и проще использовать компоненты. Все как в Yii 1. Если в корне нет папки components — создаем её. В принципе можно создать совершенно любую папку. В ней можно создать необходимые подпапки. Допустим мы создали папку components, в ней подпапку azzrael, в ней файл Helpers, а в файле мы будем писать наш код. Но сначала нужно прописать неймспейс. Без неймспейса при попытке использовать класс в файле мы получим ошибку.
Для указанного примера неймспейс будет таким
1 |
namespace app\components\azzrael; |
То есть components, azzrael это по сути путь до файла класса. Ну а дальше пишем код класса. Например так.
1 2 3 4 5 6 7 8 |
<?php namespace app\components\helpers; class Helpers{ public function Test(){ echo "Azzrael component test"; } } |
Чтобы использовать этот класс пишем такой код
1 2 3 |
<?php $test = new app\components\helpers\Helpers(); $test->Test(); |
Если класс нужен часто можно в web.php, в компонентах прописать так:
1 |
'azzh' =>['class'=>'app\components\helpers'] |
Тогда чтобы использовать класс нужно будет писать так:
1 |
Yii::$app->azzh->Test(); |
Lev 2016-05-27
"В ней можно создать необходимые подпапки. Допустим мы создали папку components, в ней подпапку azzrael, в ней файл Helpers, а в файле мы будем писать наш код."
namespace app\components\azzrael;
А зачем дальше пример с файлом components\helpers ? нельзя было так же папку Azzrael оставить, сбивает с толку этот момент, не сразу понятен, особенно новичкам