我制作了一个自定义组件(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目录中的Yii项目结构中。
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
。
为什么会出现"找不到类"错误?
您必须做的不仅仅是说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();
您可以看到composer的autoload.php文件是必需的。然后是Yii.php。如果你在你的文件中也这样做,Yii类就会被找到。
然而,这仍然不够。为了访问Yii::$app,您必须创建一个需要配置的应用程序对象。这就是web/index.php中的最后一行所做的。这会将整个配置文件考虑在内。之后CCD_ 3是可访问的。
因此,你想要实现的目标应该用另一种方式来实现。查看有关Yii命令的文档。