Zend Framework 2的哪些部分可以很容易地被自定义类替换?

时间:2015-02-19 16:37:11

标签: php zend-framework2 service-locator servicemanager

Zend Framework 2提供了使用自定义类而不是随框架提供的invokables的可能性。例如。 ViewHelper课程:

namespace Application;

...

class Module {

    public function onBootstrap(MvcEvent $mvcEvent) {
        $application = $mvcEvent->getApplication();
        $serviceManager = $application->getServiceManager();
        $viewHelperManager = $serviceManager->get('ViewHelperManager');
        $viewHelperManager->setInvokableClass('headmeta', 'MyNamespace\View\Helper\HeadMeta');
    }

    ...

    public function getAutoloaderConfig() {
        return array(
            ...
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                    'MyNamespace' => __DIR__ . '/../../vendor/MyNamespace/library/MyNamespace',
                ),
            ),
        );
    }

}

因此,可以替换所有invocable s(特别是ViewHelper s)。还有什么?是否有类型的列表,可以像invokables那样用自定义类替换(使用ServiceManager / EventManager)?

1 个答案:

答案 0 :(得分:0)

我想最后的所有事情都会在'可以替换服务/插件管理器。您可以检查controllerviewform element插件管理器类等位置。您还可以尝试转储整个服务管理器对象并查看它所拥有的密钥并尝试在Module类中覆盖它们(使用与原始服务类相同的服务类,例如用其他工厂覆盖工厂创建的服务)