我想覆盖核心Symfony2类。
具体来说,我想覆盖vendor / symfony / symfony / src / Symfony / Bundle / FrameworkBundle / Templating / TemplateReference.php,TemplateReference,这样我就可以改变找到模板的位置..这是可能的,如果是的话,如何?
答案 0 :(得分:7)
不要这样做,除非你确切地知道你在做什么,并且你百分百肯定你不会破坏某些东西......
如果您使用的是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
答案 1 :(得分:0)
您可以轻松覆盖定义为服务的某些类(您可以检查app / cache / dev / appDevDebugProejctContainer.xml),并覆盖parameter.ini上的服务名称。
但如果没有这样定义的类,你可以创建自己的"补丁"你在作曲家更新后申请。
很多人会说它很脏以编辑核心类,但如果你想要良好的性能,它通常是实现它的唯一解决方案;-),它的简单,快速&容易。
欢迎其他解决方案..