我制作了一个自定义组件(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;错误?
答案 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。