Вызов пользовательских компонентов в Yii2 (класс не найден)

Я делаю пользовательский компонент (геттер).

Мой компонент Custon работает хорошо, потому что я тестирую из контроллера:

namespace app\controllers;

use Yii;

(...)

class SiteController extends Controller
{
(...)

public function actionTest()
{
//OK, print numItems
echo '<br>-Items: '.Yii::$app->getter->numItems;
}
}

Теперь я хочу использовать свой компонент из стандартного php-файла. Этот файл php находится внутри структуры проекта Yii в cmd dir.

namespace app\cmd;

use Yii;

echo "Import ok<br>";

echo '<br>-Items: '.Yii::$app->getter->numItems;

echo "Script end";

Результатом выполнения скрипта является «Import ok» и Fatal error: Class 'Yii' not found,

Почему я получаю сообщение об ошибке «Класс не найден»?

1

Решение

Вы должны сделать больше, чем просто сказать use Yii;,

Заглянуть в Web / index.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();

Там вы видите, что файл autoload.php композитора становится обязательным. И тогда Yii.php. Если вы сделаете то же самое в своем файле, класс Yii уже будет найден.

Однако этого все еще недостаточно. Чтобы получить доступ к приложению Yii :: $, вы должны создать объект Application, который нуждается в конфигурации. Это то, что делает последняя строка в web / index.php. Это учитывает все файлы конфигурации. После этого Yii::$app доступно.

То, чего вы хотите достичь, должно быть сделано по-другому. Загляните в документация о командах Yii.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]