У меня есть проблемы, решая catchable ошибку:ZF2 служба завода не впрыскивается
Catchable fatal error: Argument 1 passed to Market\Service\UserService::__construct() must be an instance of Market\Mapper\UserMapperInterface,
В конструкторе моей UserService
я использую UserMapperInterface
(инъекции зависимостей). Я создал фабричный класс для этого, и я зарегистрировал его в моей конфигурации service_manager
. Ничего не происходит, и отображается ошибка.
Я создал завод и услуги 19287319827 раз, но теперь я не знаю, как я могу решить эту смертельную ошибку noob.
Config:
'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 часа в своем коде, и я все проверял, и я думаю, что все выглядит хорошо, но класс не вводится на моем заводе.
Измените конструктор UserService, чтобы ожидать, что объект с разнесенным именем. '__construct (Market \ Mapper \ UserMapperInterface $ userMapperInterface)' –
, вероятно, проблема пространства имен. Возможно, вам не хватает предложения 'use' в вашем классе' UserEsrvice' – marcosh
. У меня есть использование, PhpStorm автоматически добавляет, если его пропустить! – Ivan