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 的代码,因此很难说出到底出了什么问题...

如果您自己无法理解,请分享有关该部分的更多详细信息。