在Yii2中调用自定义组件(未找到类)

时间:2015-03-02 17:46:47

标签: php yii2 classnotfound

我制作了一个自定义组件(getter)。

我的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文件位于cmd dir中的Yii项目结构中。

namespace app\cmd;

use Yii;

echo "Import ok<br>";

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

echo "Script end";

运行脚本的结果是&#34;导入确定&#34;和Fatal error: Class 'Yii' not found

为什么我找不到“未找到的课程”&#39;错误?

1 个答案:

答案 0 :(得分:3)

你必须做的不仅仅是说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 :: $ app,您必须创建需要配置的Application对象。这是web / index.php中的最后一行。这会将整个配置文件考虑在内。之后可以访问Yii::$app

所以你想要实现的目标应该以另一种方式完成。请查看documentation about Yii commands