Php Zend Framework 2的哪些部分可以被自定义类轻松替换?

Php Zend Framework 2的哪些部分可以被自定义类轻松替换?,php,zend-framework2,service-locator,servicemanager,Php,Zend Framework2,Service Locator,Servicemanager,Zend Framework 2提供了使用自定义类而不是框架附带的invokables的可能性。例如,ViewHelper类: namespace Application; ... class Module { public function onBootstrap(MvcEvent $mvcEvent) { $application = $mvcEvent->getApplication(); $serviceManager = $appli

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
)?

我想服务/插件管理器中的所有内容都可以替换。您可以检查诸如、或插件管理器类之类的位置。您还可以尝试转储整个service manager对象,查看它持有哪些密钥,并尝试在
模块
类中覆盖它们(使用与原始类相同的服务类,例如,使用另一个工厂覆盖工厂创建的服务)