Zend framework2 ZF3-删除第三方模块的抽象工厂

Zend framework2 ZF3-删除第三方模块的抽象工厂,zend-framework2,zend-framework3,Zend Framework2,Zend Framework3,有没有办法扩展模块的抽象工厂并删除扩展工厂?我必须对它做一些修改,但是如果我扩展它并注册我的新工厂,旧工厂仍然是注册的,不是吗?您可以用自己的工厂覆盖工厂,但这会导致代码重复,并且您必须监视第三方模块的开发人员所做的更新 您可以使用初始值设定项,但它是在每个服务的初始化过程中调用的,因此它可能会影响性能 您正在查看的是授权人。这是一种真正(原始)工厂的包装。 以下是Marco Pivetta的优秀文章: 以下是他对授权人的解释: 委托人工厂实际上是真实工厂的包装:它 允许我们用“委托”替换真正的

有没有办法扩展模块的抽象工厂并删除扩展工厂?我必须对它做一些修改,但是如果我扩展它并注册我的新工厂,旧工厂仍然是注册的,不是吗?

您可以用自己的工厂覆盖工厂,但这会导致代码重复,并且您必须监视第三方模块的开发人员所做的更新

您可以使用
初始值设定项
,但它是在每个服务的初始化过程中调用的,因此它可能会影响性能

您正在查看的是授权人。这是一种真正(原始)工厂的包装。
以下是Marco Pivetta的优秀文章: 以下是他对授权人的解释:

委托人工厂实际上是真实工厂的包装:它 允许我们用“委托”替换真正的服务,或者 在返回工厂生产的对象之前,与该对象进行交互 Zend\ServiceManager

在伪代码中,委托人工厂执行以下操作:

服务=委托人工厂(工厂())

委托人工厂的示例

class LoggerDelegatorFactory implements DelegatorFactoryInterface
{
    public function createDelegatorWithName(
        ServiceLocatorInterface $serviceLocator,
        $name,
        $requestedName,
        $callback
    ) {
        $logger = $callback();

        $logger->clearFilters();
        $logger->addFormatter(new HttpRequestContextFormatter());

        return $logger;
    }
}
服务管理器配置:

'delegators' => [
    'DbLoggingModule\Logger' => [
        'LoggerDelegatorFactory',
        // can add more of these delegator factories here
    ],
],

您可以使用自己的工厂覆盖factory,但这会导致代码重复,并且您必须监视该第三方模块的开发人员所做的更新

您可以使用
初始值设定项
,但它是在每个服务的初始化过程中调用的,因此它可能会影响性能

您正在查看的是授权人。这是一种真正(原始)工厂的包装。
以下是Marco Pivetta的优秀文章: 以下是他对授权人的解释:

委托人工厂实际上是真实工厂的包装:它 允许我们用“委托”替换真正的服务,或者 在返回工厂生产的对象之前,与该对象进行交互 Zend\ServiceManager

在伪代码中,委托人工厂执行以下操作:

服务=委托人工厂(工厂())

委托人工厂的示例

class LoggerDelegatorFactory implements DelegatorFactoryInterface
{
    public function createDelegatorWithName(
        ServiceLocatorInterface $serviceLocator,
        $name,
        $requestedName,
        $callback
    ) {
        $logger = $callback();

        $logger->clearFilters();
        $logger->addFormatter(new HttpRequestContextFormatter());

        return $logger;
    }
}
服务管理器配置:

'delegators' => [
    'DbLoggingModule\Logger' => [
        'LoggerDelegatorFactory',
        // can add more of these delegator factories here
    ],
],