如何覆盖核心Symfony2类?

如何覆盖核心Symfony2类?,symfony,Symfony,我想重写一个核心Symfony2类 具体地说,我想覆盖vendor/symfony/symfony/src/symfony/Bundle/FrameworkBundle/Templating/templaterreference.php,即templaterreference,这样我就可以更改找到模板的位置。。这可能吗?如果可能,怎么可能?不要这样做,除非你确切知道自己在做什么,并且你100%确定自己不会弄坏东西 如果您使用的是Symfony 2.0类加载器组件: $loader->reg

我想重写一个核心Symfony2类


具体地说,我想覆盖vendor/symfony/symfony/src/symfony/Bundle/FrameworkBundle/Templating/templaterreference.php,即templaterreference,这样我就可以更改找到模板的位置。。这可能吗?如果可能,怎么可能?

不要这样做,除非你确切知道自己在做什么,并且你100%确定自己不会弄坏东西

如果您使用的是Symfony 2.0类加载器组件:

$loader->registerNamespaces(array(
    'Symfony' => array(
        __DIR__.'/../src/vendor/symfony/src',
        __DIR__.'/../vendor/symfony/src',
        __DIR__.'/../vendor/bundles',
    ),
    ...
));
要使用composer执行此操作,请编辑composer.json文件:

这告诉自动加载程序,当它尝试从Symfony命名空间加载类时,首先查看src/vendor/Symfony/src,然后查看vendor/Symfony/src,然后查看vendor/bundles

然后在此处复制要编辑的文件:

src/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Templating/TemplateReference.php

不要这样做,除非你确切地知道你在做什么,并且你100%确信你不会弄坏东西

如果您使用的是Symfony 2.0类加载器组件:

$loader->registerNamespaces(array(
    'Symfony' => array(
        __DIR__.'/../src/vendor/symfony/src',
        __DIR__.'/../vendor/symfony/src',
        __DIR__.'/../vendor/bundles',
    ),
    ...
));
要使用composer执行此操作,请编辑composer.json文件:

这告诉自动加载程序,当它尝试从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上的服务名称

但是如果类不是这样定义的,您可以在composer更新后创建自己应用的补丁

很多人会说编辑核心类是肮脏的,但是如果你想要好的性能,这通常是实现它的唯一解决方案;-,它简单、快速、简单


欢迎使用其他解决方案。

您可以轻松覆盖某些定义为服务的类。您可以在app/cache/dev/appDevDebugProejctContainer.xml上进行检查,并覆盖parameter.ini上的服务名称

但是如果类不是这样定义的,您可以在composer更新后创建自己应用的补丁

很多人会说编辑核心类是肮脏的,但是如果你想要好的性能,这通常是实现它的唯一解决方案;-,它简单、快速、简单


欢迎其他解决方案。

Symfony同时依赖于Composer的自动加载机制。是的,但他的问题被标记为2.0而不是2.1:ehm。。。开始评论时也使用了But 2.0 uses composer,但我明智地先看一看。你完全正确。他说你们都必须用2.1版本的composer来做不同的事情,但这很容易实现。我怎么用2.1版本来做呢?我想我应该特别提到2.1,但我现在不想为此写一个新问题Symfony同时依赖于作曲家的自动加载机制。是的,但他的问题被标记为2.0而不是2.1:嗯。。。开始评论时也使用了But 2.0 uses composer,但我明智地先看一看。你完全正确。他说你们都必须用2.1版本的composer来做不同的事情,但这很容易实现。我怎么用2.1版本来做呢?我想我应该特别提到2.1,但我现在不想为此写一个新问题例如我想自动检测移动设备,如果用户来自移动设备,我想看看等效的模板文件是否位于views/mobile/而不是/views/。。我提到的确切文件包含查找细枝模板路径位置的类。。我想自动检测移动设备,如果用户来自移动设备,我想看看等效的模板文件是否位于views/mobile/而不是/views/。。我提到的确切的文件包含了找到细枝模板路径位置的类。这个答案有点隐藏,更详细的信息可以在这里找到:btw触摸核心类是坏的,千万不要这样做这个答案有点隐藏,更详细的信息可以在这里找到:btw触摸核心类是坏的,千万不要这样做