调用Yii2中的自定义组件(找不到类)


Calling custom components in Yii2 (Class not found)

我制作了一个自定义组件(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命令的文档。