如何覆盖Core Symfony2类?

Cea*_*gle 1 symfony

我想覆盖核心Symfony2类.

具体来说,我想覆盖vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateReference.php,TemplateReference所以我可以改变它找到模板的位置..这是可能的,如果是的话,怎么样?

Adr*_*ult 7

不要这样做,除非你确切地知道你在做什么,并且你百分百肯定你不会破坏某些东西......

如果您使用的是Symfony 2.0 ClassLoader组件:

$loader->registerNamespaces(array(
    'Symfony' => array(
        __DIR__.'/../src/vendor/symfony/src',
        __DIR__.'/../vendor/symfony/src',
        __DIR__.'/../vendor/bundles',
    ),
    ...
));
Run Code Online (Sandbox Code Playgroud)

要使用composer执行此操作,这应该可以,编辑您的composer.json文件:

"autoload": {
    "psr-0": {
         "": "src/",
         "Symfony": "src/vendor/symfony/src/"
    }
},
Run Code Online (Sandbox Code Playgroud)

这告诉自动加载器,当它试图从Symfony命名空间加载一个类时,首先查看你的src/vendor/symfony/src,vendor/symfony/src然后在vendor/bundles...

然后复制要在其中编辑的文件:

src/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateReference.php
Run Code Online (Sandbox Code Playgroud)