2011-12-19 97 views
2

我來自.net背景,因此我在鋰中看到的空類(模型)令人不安。
在.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 

我所看到的鋰是JavaScript的動態對象。
我可以聲明一個任意對象並隨着我去添加屬性。 現在,我並不是說這是一件壞事,我只是想知道:

  1. 如果這是正常的PHP或正常的鋰電池和
  2. 如果我添加屬性(這樣我就可以得到eclipse中的代碼完成),會傷害到Lithium的ORM特性嗎?
+0

無論何時向數據庫添加字段,都無需修改代碼! – psparrow 2011-12-19 16:24:35

回答

3

鋰是相當先進的,並利用了許多框架沒有的一些PHP功能。您可以直接向PHP中的對象添加屬性,但是在使用框架時,您需要查看最佳實踐以及它將如何影響您的應用程序。

在鋰中,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

+0

所以這意味着它是一個鋰的東西,並在實際屬性編碼是一件壞事? (再次,只是對代碼完成感到興奮,如果它不是一個好主意,在屬性中編碼,我不擅長) – 2011-12-19 16:28:52

+0

對。處理實體數據時,您會希望遠離它。享受與鋰的合作! – psparrow 2011-12-19 16:33:03

+0

你不明確地這樣說,但我認爲添加屬性會縮短Lithium所做的映射;您的更改不會進入'$ _updated'數組,並且不會保存到數據庫。因此手動添加屬性實際上會導致問題。 – benzado 2011-12-19 19:51:09