Какие части Zend Framework 2 можно легко заменить пользовательскими классами?

0

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 (особенно ViewHelper s) могут быть заменены. Что еще? Есть ли список типов классов, которые могут быть заменены на пользовательские, такими как invokables (используя ServiceManager/EventManager)?

Теги:
service-locator
zend-framework2
servicemanager

1 ответ

0

Я предполагаю, что все, что попадает в "диспетчер услуг/плагинов", можно заменить. Вы можете проверять места, такие как контроллеры, просматривать или создавать классы плагинов элементов элемента. Вы также можете попытаться сбросить весь объект сервис-менеджера и посмотреть, какие ключи он удерживает, и попытаться перезаписать их в вашем классе Module (используя тот же класс обслуживания, что и оригинал, например, перезапись фабрично созданной службы с другой фабрикой).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню