在symfony中扩展sfDoctrineRecord

Jas*_*ett 3 doctrine symfony1

我已经在我的symfony项目中的一些实例类中添加了一些功能,我希望我的所有实例类都具有这些功能.如果我对编辑核心symfony安装没有任何疑虑,我会直接将我的方法添加到sfDoctrineRecord类中.但是我当然不希望这样做,因为我的更改会在升级时中断,而且我的更改不会很好地移植到其他项目中.

如果我想在symfony中为我的所有实例类添加某些功能,那么"正确"的方法是什么?

(PS当我说"实例类"时,我的意思是lib/model/doctrine/Customer.class.php.)

Jer*_*man 6

脚步:

  1. 创建myDoctrineRecord

    abstract class myDoctrineRecord extends sfDoctrineRecord
    {
      public function commonRecordMethod() { }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我将此文件放在lib/record中,但您可以将其放在自动加载器将看到的任何位置.

  2. 设置Symfony以在ProjectConfiguration的configureDoctrine回调中使用此类:

     public function configureDoctrine(Doctrine_Manager $manager)
     {
       sfConfig::set('doctrine_model_builder_options', array('baseClassName' => 'myDoctrineRecord'));
     }
    
    Run Code Online (Sandbox Code Playgroud)

而已!Symfony不是很棒吗?:)

  • 真棒.这正是我想要的.出于某种原因,它对我不起作用,但这是另一个问题的另一个问题.对于任何好奇的人,官方文档都在这里:http://www.symfony-project.org/doctrine/1_2/en/03-Configuration (2认同)