在Doctrine1.2中从yaml生成模型的更好方法?

时间:2011-06-08 00:43:54

标签: doctrine doctrine-1.2

你好我最近一直在使用doctrine 1.2并且从命令行做了大量的工作。问题是,当我在项目上工作时,我首先改变了我的模式。这没关系,但是当我运行generate-models-from-yaml时,它会覆盖我的模型类,而且很多时候我在模型类中都有代码。

我应该注意,我在ZFDoctrine包中使用了zend框架和doctrine 1.2。所以我将zf工具与zfDoctrine Provider一起使用。我运行的实际命令是

zf generate-models-from-yaml doctrine  

提前致谢, 约翰

1 个答案:

答案 0 :(得分:0)

解决此问题的一种方法是使自定义代码远离经常重写的类,并将其放在扩展基本模型或使用相关模型的不同类中。

因此,如果你有一个可以随时重写的BlogModel,你总能拥有一个

class BlogWrapper extends BlogModel{
    function __construct(){
        parent::construct();
    }

    public function myBusinessLogic(){
        $this->functionFromBlogModel();
    }
}

或(也许更好 - 但这只是我的意见)

class MyBusinessLogic {
    private $model;

    function __construct(){
        $this->model = new BlogModel();
    }

    function doStuff($foo){
        $bar = $this->model->get($foo);
        $bar->doSomething();
        $bar->save();
    }
}

这实际上取决于业务逻辑的性质,如果所讨论的逻辑是模型本质的一部分,那么第一种方法可能更好,否则,如果逻辑只是使用或“拥有”模型,那么第二种方法更好。

当然,这个答案完全独立于学说或框架,它更像是“OO哲学”:)