Вопрос по symfony – Как я могу переопределить основные классы Symfony2?
Я хочу переопределить основной класс Symfony2.
В частности, я хочу переопределить vendor / symfony / symfony / src / Symfony / Bundle / FrameworkBundle / Templating / TemplateReference.php, TemplateReference, чтобы я мог изменять местоположения, где он находит шаблоны. Возможно ли это, и если да, то как?
если вы точно не знаете, что делаете, и вы на 100% уверены, что что-то не сломаете ...
Если вы используете компонент Symfony 2.0 ClassLoader:
$loader->registerNamespaces(array(
'Symfony' => array(
__DIR__.'/../src/vendor/symfony/src',
__DIR__.'/../vendor/symfony/src',
__DIR__.'/../vendor/bundles',
),
...
));
Чтобы сделать это с композитором, это должно работать, отредактируйтеcomposer.json
файл:
"autoload": {
"psr-0": {
"": "src/",
"Symfony": "src/vendor/symfony/src/"
}
},
Это говорит автозагрузчику, что когда он пытается загрузить класс изSymfony
пространство имен, чтобы сначала заглянуть в вашsrc/vendor/symfony/src
, затем вvendor/symfony/src
затем вvendor/bundles
...
А затем продублируйте файл, который вы хотите отредактировать:
src/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateReference.php
определенные как сервис (вы можете проверить в app / cache / dev / appDevDebugProejctContainer.xml), и переопределить имя сервиса в вашем файле parameter.ini.
НО, если класс не определен подобным образом, вы можете создать собственный & quot; патч & quot; Вы применяете после обновления композитора.
Многие люди скажут, что редактировать основные классы - это грязно, но если вам нужна хорошая производительность, зачастую это единственное решение для достижения этого ;-), это просто, быстро и легко. легко.
Другие решения приветствуются.