Php 如何覆盖symfony2 core FrameworkBundle?

Php 如何覆盖symfony2 core FrameworkBundle?,php,symfony,core,Php,Symfony,Core,我试图覆盖位于供应商/symfony/symfony/src/symfony/Bundle/FrameworkBundle/Routing/Router.php的Symfony2路由器 我遵循了这一点,创建了自己的包,并在AppKernel.php中注册了它 <?php // src/My/SymfonyBundle/MySymfonyBundle.php namespace My\SymfonyBundle; use Symfony\Component\HttpKernel\Bund

我试图覆盖位于
供应商/symfony/symfony/src/symfony/Bundle/FrameworkBundle/Routing/Router.php的Symfony2路由器

我遵循了这一点,创建了自己的包,并在
AppKernel.php
中注册了它

<?php
// src/My/SymfonyBundle/MySymfonyBundle.php

namespace My\SymfonyBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class MySymfonyBundle extends Bundle
{
    public function getParent()
    {
        // die('test');
        return 'FrameworkBundle';
    }
}
但它被忽视了。我希望看到我的调试
test
消息,但是我覆盖的文件根本没有加载

我也见过这个,但我觉得一点也不清楚


如何正确覆盖Symfony2核心包(
vendor/symfony/symfony/src/symfony/bundle/FrameworkBundle/Routing/Router.php
)或核心组件(
vendor/symfony/symfony/src/symfony/component/Routing/Router.php
)呢?

你太难了

如果您只想插入自己的路由器类,那么在app/config/parameters.yml中添加:

router.class: My\SymfonyBundle\Router
基本上,所有框架类都可以用这种方式重写。看看 供应商/symfony/symfony/src/symfony/Bundle/FrameworkBundle/resources/config/routing.xml

不要使用getParent方法。这不是你想象的那样

======================================================

更新以响应有关getParent信息的请求

getParent记录在这里:

它允许您覆盖父捆绑包中数量有限的文件。它是为调整第三方捆绑包而设计的。我在尝试使用它时感到非常困惑,并且倾向于避免使用它

======================================================


最后一点注意:我建议将router.class添加到parameters.yml,因为这是最容易使用的文件。但是,如果您正在加载服务文件,它确实应该放在My\SymfonyBundle\Resources\config\services.yml的参数部分。

:)谢谢,简单性最好了。请您解释一下
getParent
的工作原理好吗?或者请给我指出正确的方向,我不想最后被误导。顺便说一句,你忘记了路径中“资源”中的第二个“r”(有一段时间我很困惑,为什么我不能复制路径并打开文件)
router.class: My\SymfonyBundle\Router