防止在Symfony中覆盖类方法

时间:2013-07-22 15:09:42

标签: php symfony-1.4

我在Symfony的BaseContent类中添加了一些个性化方法 然而,还有其他开发人员正在研究Symfony应用程序,可能他们正在使用某种CRUD生成器生成代码(我对Symfony并不熟悉,因此我不确定使用的是什么)。 问题是当其他开发人员重新生成PHP类时,我的定制代码会被覆盖。

是否可以采取任何措施将定制方法保存在同一个BaseContent类文件中?

1 个答案:

答案 0 :(得分:2)

您在Content类中添加或覆盖BaseContent参数和方法,这些参数和方法由symfony命令boost:build-model或doctrine:build-model(取决于您使用的ORM)以及Base类的父目录生成。这样,在更改架构时,您无需相应地重写个性化方法。

推动例子:

// lib/model/om/BaseContent.php
// Don't touch as it may be overwritten
abstract class BaseContent extends BaseObject  implements Persistent {
...
    public function getParameter()
    {
        return $this->parameter;
    }
...
}

// lib/model/Content.php
// add or override here
class Content extends BaseContent {
    public function getParameter()
    {
        //Do something more
        return parent::getParameter();
    }
}

在symfony项目中的任何地方,您始终使用继承基类的非Base类。

基类由PHP ORMs Propel(在文件夹'om'和'map'下)或Doctrine(在'base'文件夹下)生成,基于模式中定义的内容。