您好我试图运行This Blog Example所以我有本教程所说的每一步,但现在我收到此错误:创建工厂类后
致命错误:类Blog \ Factory \ ListControllerFactory包含1 因此,抽象方法必须声明为抽象或实现 其余的方法 (Zend \ ServiceManager \ Factory \ FactoryInterface :: __ invoke)中 d:\ XAMPP \ htdocs中\ zend2test \模块\博客的\ src \博客\厂\ ListControllerFactory.php 在第28行
这是我的工厂类:
// Filename: /module/Blog/src/Blog/Factory/ListControllerFactory.php
namespace Blog\Factory;
use Blog\Controller\ListController;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class ListControllerFactory implements FactoryInterface
{
private $serviceLocator;
/**
* Create service
*
* @param ServiceLocatorInterface $serviceLocator
*
* @return mixed
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$realServiceLocator = $serviceLocator->getServiceLocator();
$postService = $realServiceLocator->get('Blog\Service\PostServiceInterface');
return new ListController($postService);
}
}
我该如何解决这个问题?
答案 0 :(得分:2)
The FactoryInterface上的点击事件扩展了另一个界面:
FactoryInterface extends Factory\FactoryInterface
。
interface声明了__invoke
方法。因此,要使您的课程符合规定,您需要同时实施 createService 和 __ invoke 。
还声明__invoke
方法。 E.g。
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
// get your dependency
$postService = $container->get('Blog\Service\PostServiceInterface');
// inject it int the constructor
return new ListController($postService);
}
另外,添加以下行:
use Interop\Container\ContainerInterface;
在您的文件的开头(与您的其他"使用"语句)