Php yii中的CModel子类
我是一个4天大的易迷,我非常喜欢它 我有一个特殊的数据库表,不能由CActiveRecord直接使用。我的解决方案是将CModel子类化,以拥有自己的逻辑来列出、创建、保存和删除记录。我的新CModel子类不能实例化;似乎CModel需要定义更多的方法来允许从中创建实例 我的问题是:这是正确的方法还是有更好的方法?如果是,为使我的新类完整,需要定义哪些缺少的方法;不抽象Php yii中的CModel子类,php,yii,Php,Yii,我是一个4天大的易迷,我非常喜欢它 我有一个特殊的数据库表,不能由CActiveRecord直接使用。我的解决方案是将CModel子类化,以拥有自己的逻辑来列出、创建、保存和删除记录。我的新CModel子类不能实例化;似乎CModel需要定义更多的方法来允许从中创建实例 我的问题是:这是正确的方法还是有更好的方法?如果是,为使我的新类完整,需要定义哪些缺少的方法;不抽象 谢谢我通常创建自己的类来处理我正在构建的webapp的所谓“逻辑” 我将它放在另一个文件夹(通常是logics文件夹)中,并从
谢谢我通常创建自己的类来处理我正在构建的webapp的所谓“逻辑” 我将它放在另一个文件夹(通常是logics文件夹)中,并从配置文件自动导入目录。逻辑类不从任何模型中生成子类
public class ProfitLogic { ... }
在类中,我实现了实例化和使用我需要的任何ActiveRecord的函数
其原因是,在进行原型设计时,我经常会优化我的数据库设计,并且我需要再次重新生成ActiveRecords:p我通常创建自己的类来处理我正在构建的webapp的所谓“逻辑” 我将它放在另一个文件夹(通常是logics文件夹)中,并从配置文件自动导入目录。逻辑类不从任何模型中生成子类
public class ProfitLogic { ... }
在类中,我实现了实例化和使用我需要的任何ActiveRecord的函数
这样做的原因是,在原型设计时,我经常优化我的数据库设计,并且我需要再次重新生成ActiveRecords:p一般来说,您的方法很好,即使您没有“被迫”采用它,也会很好。我使用
CActiveRecord
子类作为模型的基础,以提供额外的自定义功能
至于您的另一个问题,您只需要实现attributeNames()
就可以实例化类的对象
但是,为什么不直接将
CActiveRecord
子类化,而不是CModel
?您仍然可以覆盖选择的任何和所有方法。您的数据库是否与通常的模式有如此显著的不同,以致于您无法重用任何逻辑?总体而言,您的方法很好,即使您没有“被迫”采用它,也会很好。我使用CActiveRecord
子类作为模型的基础,以提供额外的自定义功能
至于您的另一个问题,您只需要实现attributeNames()
就可以实例化类的对象
但是,为什么不直接将
CActiveRecord
子类化,而不是CModel
?您仍然可以覆盖选择的任何和所有方法。您的数据库是否与通常的模式有如此显著的不同,以至于您无法重用任何逻辑?我对Yii也相当陌生,但我发现扩展CForm(如默认的ContactForm模型)非常有用
这不是拥有大量繁重业务逻辑的最佳选择,但它涉及到您突破典型工作流的要点。我对Yii也相当陌生,但我发现扩展CForm(如默认的ContactForm模型)可能很有用
这不是拥有大量繁重业务逻辑的最佳选择,但它涉及到您突破典型工作流程的要点。谢谢您的回答。。。我可以(最终)从源代码中认识到AttributeName是yii中唯一的虚拟方法。我只是不喜欢使用CActiveRecord,因为它不会给我带来任何额外的好处,因为我的(虚拟)记录存储了许多记录,而不是一个属性:值表感谢您的回答。。。我可以(最终)从源代码中认识到AttributeName是yii中唯一的虚拟方法。我只是不喜欢使用CActiveRecord,因为它不会给我带来任何额外的好处,因为我的(虚拟)记录存储了许多记录,而不是一个属性:值表中的记录