ZF2 服务工厂未注入
ZF2 service factory not injected
我在解决可捕获错误时遇到问题:
Catchable fatal error: Argument 1 passed to
Market\Service\UserService::__construct() must be an instance of
Market\Mapper\UserMapperInterface,
在我的 UserService
的构造函数中,我使用 UserMapperInterface
(依赖注入)。我为此创建了一个工厂 class,并在我的 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);
}
}
我不敢相信我无法解决这个 noob 致命错误。我一直在寻找代码中的最后 2 小时,我一直在检查所有内容,我认为一切看起来都不错,但是 class 没有注入我的工厂。
你的问题出在这一行:
$userMapperInteface = $serviceLocator->get('Market\Mapper\UserMapperInterface');
它可能 returns null
或至少是预期的 UserMapperInterface
实例。由于您没有分享任何关于如何以及在何处定义或构建此 Market\Mapper\UserMapperInterface
的代码,因此很难说出到底出了什么问题...
如果您自己无法理解,请分享有关该部分的更多详细信息。
我在解决可捕获错误时遇到问题:
Catchable fatal error: Argument 1 passed to Market\Service\UserService::__construct() must be an instance of Market\Mapper\UserMapperInterface,
在我的 UserService
的构造函数中,我使用 UserMapperInterface
(依赖注入)。我为此创建了一个工厂 class,并在我的 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);
}
}
我不敢相信我无法解决这个 noob 致命错误。我一直在寻找代码中的最后 2 小时,我一直在检查所有内容,我认为一切看起来都不错,但是 class 没有注入我的工厂。
你的问题出在这一行:
$userMapperInteface = $serviceLocator->get('Market\Mapper\UserMapperInterface');
它可能 returns null
或至少是预期的 UserMapperInterface
实例。由于您没有分享任何关于如何以及在何处定义或构建此 Market\Mapper\UserMapperInterface
的代码,因此很难说出到底出了什么问题...
如果您自己无法理解,请分享有关该部分的更多详细信息。