我在解决可捕获的错误时遇到问题:
可捕获的致命错误:参数1传递给 Market \ Service \ UserService :: __ construct()必须是。的实例 市场\映射器\ UserMapperInterface,
在我的UserService
的构造函数中,我使用UserMapperInterface
(依赖注入)。我为此创建了一个工厂类,并在service_manager
配置中注册了它。什么都没发生,并显示错误。
我创建工厂和服务19287319827次,但现在我不知道如何解决这个noob致命错误。
配置:
'service_manager' => array(
'factories' => array(
'Market\Service\UserServiceInterface' => 'Market\Factory\UserServiceFactory',
)
),
服务
class UserService implements UserServiceInterface
{
/**
* @var object Market\Mapper\UserMappperInteface
*/
protected $userMapper;
/**
* UserService constructor.
*
* @param UserMapperInterface $userMapperInterface
*/
public function __construct(UserMapperInterface $userMapperInterface)
{
$this->userMapper = $userMapperInterface;
}
工厂:
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
use Market\Service\UserService;
class UserServiceFactory implements FactoryInterface
{
/**
* Create service
*
* @param ServiceLocatorInterface $serviceLocator
* @return mixed
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
$userMapperInteface = $serviceLocator->get('Market\Mapper\UserMapperInterface');
return new UserService($userMapperInteface);
}
}
我无法相信我无法解决这个菜鸟的致命错误。我正在查找并查找我的代码中的最后2个小时,我一直在检查所有内容,我认为一切看起来都不错,但课程没有注入我的工厂。
答案 0 :(得分:0)
你的问题在于这一行:
$userMapperInteface = $serviceLocator->get('Market\Mapper\UserMapperInterface');
它可能会返回null
或至少是预期UserMapperInterface
实例的其他内容。由于您没有共享任何关于Market\Mapper\UserMapperInterface
定义或构建的方式和位置的代码,因此很难说出究竟出了什么问题......
如果您自己无法弄清楚,请分享有关该部分的更多详情。