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
],
],