能否不用 active record

各位好,刚刚接触Yii框架,有两个问题求教于大家

  1. active record相关

AR很方便很强大,这点毋庸置疑,但是对于不是非常熟悉 Yii AR 的新手来说,使用AR来处理一些逻辑比较繁杂的项目,反而有些处处擎肘

  • 如果不用 active record 的话,使用Yii的意义是不是就大打折扣了?Yii 的多数功能,是否都依赖于 active record ?

  • 不用AR的话,是不是需要改写CArrayDataProvider?因为一次把我们需要的数据都赋给 rawData 属性几乎是不可能的,大多数情况下,我们从数据库中取出的记录都会很多

  • 不用AR的话,原来从CActiveRecord继承来的那些 Model,应该从哪里继承?直接从CModel么?

  1. 函数问题

在一些不是完全OO的项目中,经常会编写一些函数,这些函数可以方便地应用于项目中各个需要的地方,包括一些毫不相干的class中,那么在Yii中,如果需要定义一些这样的“公用”函数的话,该怎么办呢?

请各位不吝赐教

  1. 你可以直接用db

Yii::app()->db->createCommand("SELECT * FROM User")->query()

详细请参考system.db, CDbCommand

  1. 你可以建立components, 放在protected/components,如

Class MyClass

{

function static testFunc()


{


    echo "Hello, world!";


}

}

然后在你想用的地方,直接MyClass:testFunc(),因为Yii会自动加载components里面的class的。

对于第一点,还是建议你熟悉一下AR咯。

我觉得第一你要熟悉AR这个是必须的,但是面对复杂的情况,你也不能死用AR,必要的时候你应该使用DAO, 虽然我也学的不怎么好,但是我在努力着。