模型属性是动态的

时间:2011-12-19 06:48:52

标签: php lithium

我来自.net背景,所以我在Lithium中看到的空类(模型)令人不安。
在.net中,我没有属性,除非我做了类似的事情:

public class MyClass()
   public property myProp as string
end class

然后我像这样设置或获取属性:

dim aClass as myClass
aClass.myProp = "some string"
dim myString as String = aClass.myProp

我在Lithium中看到的是动态对象和javascript 我可以声明一个任意对象并添加属性。 现在,我不是说这是件坏事,我只是想知道:

  1. 如果这对于PHP是正常的,或对于锂是正常的,
  2. 如果我添加属性(因此我可以在eclipse中获得代码完成),它会损害Lithium的ORM功能吗?

1 个答案:

答案 0 :(得分:3)

Lithium相当先进,并利用了许多框架所没有的PHP功能。您可以在PHP中直接向对象添加属性,但是,在使用框架时,您需要查看最佳实践以及它将如何影响您的应用程序。

在Lithium中,MyModel::create()MyModel::find()返回实体对象或表示数据库记录或文档的实体对象集合。

实体属性存储在受保护的$_updated$_data数组中,并通过__get__set方法进行访问。

因此,当您引用$myModel->title时,您正在/设置$myModel->_updated['title']

然后,当您调用$myModel->save()时,$_updated中的数据将保存到数据库记录或文档中。

有关详细信息,请参阅https://github.com/UnionOfRAD/lithium/blob/master/data/Entity.php