您好我正在尝试实例化我正在使用的另一个模块(由我创建)的另一个类控制器的类控制器,但我不能这样做,因为我收到了消息:
未找到类'ZfCommons \ Controller \ MyAbstractActionController' .....
当我执行命令use ZfCommons\Controller\MyAbstractActionController;
第一个命令中包含类MyAbstractActionController
的文件是:
namespace ZfCommons\Controller;
我想我必须在PHP中执行require或include,但是使用ZF2我认为可能有更优雅的方法来做到这一点。
我该怎么办?也许我错了。 如果您需要查看更多代码,我可以复制和粘贴。
答案 0 :(得分:1)
如果您只想获得某些服务(例如某些AuthService),您可以将其注册为服务(您可能在控制器上调用getAuthService()
后已经完成)并使用ServiceLocator获取它或 - 甚至更好的单元测试 - 通过工厂将其注入您的控制器。您可能需要查看ZfcUser,看看它是如何完成的。
如果您 - 由于某种原因 - 坚持使用这种硬编码方法(这实际上是对框架有效)我认为您只是错误地设置了自动加载或ZfCommons模块未激活。
<强>第一强>
检查application.config.php以获取已激活的模块。 ZfCommons和Application至少需要激活。
<强>第二强>
检查ZfCommons的Module.php以初始化自动加载器:
<?php
namespace ZfCommons;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\Loader\StandardAutoloader;
class Module implements AutoloaderProviderInterface,
{
// snip
/**
* {@inheritDoc}
*/
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
// snip
}
这将初始化名称空间ZfCommons的类自动加载。
如果您的文件名根据PSR-0正确映射到类和接口,它现在应该可以正常工作。