Я хочу установить сторонний класс PHP для своего приложения. Как мне это сделать в Yii2? В документации ничего не нашел.
Сторонний PHP-класс Yii2
Ответы (4)
Самый простой способ сделать это — просто зарегистрировать свой класс в любых пространствах имен, определенных Yii2, и использовать его в файле как use app\namespace\classname;
.
Как сказал FIMAk, это хорошо задокументировано в документах, но все же было не очень понятно, как мне использовать загруженную библиотеку с классом автозагрузчика. Итак, вот что я сделал:
1) создайте новую папку в каталоге vendor
и поместите туда библиотеку
2) требуется автозагрузчик в входном скрипте перед включением Yii, в случае базового шаблона приложения это path_to_yii_installation/web/index.php
Например, в одном из проектов, над которым я работал до того, как мне потребовалось генерировать листы Excel, я обнаружил, что PHPExcel — лучшая библиотека для этого. Поэтому я включил автозагрузчик PHPExcel следующим образом:
require(__DIR__ . '/../vendor/excel/PHPExcel.php');
Мой полный файл index.php
выглядит так:
<?php
// comment out the following two lines when deployed to production
// defined('YII_DEBUG') or define('YII_DEBUG', true);
// defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../vendor/excel/PHPExcel.php');
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/../config/web.php');
(new yii\web\Application($config))->run();
3) в верхней части вашего контроллера, модели или везде, где вы хотите использовать библиотеку, добавьте use LibraryClassName
и все.
На самом деле это хорошо описано в документации.
Вы можете узнать, как установить:
- с помощью композитора;
- using Downloaded Libraries;
- If a library carries its own class autoloader;
- Если в библиотеке нет автозагрузчика классов, но имена классов соответствуют PSR-4;
- И если ни один из вышеперечисленных случаев не имеет места;
добавьте стороннюю библиотеку в composer.json и нажмите одну команду
composer update
всегда выбирайте библиотеки на основе композитора.