モデルのプロパティは動的です

私はネットバックグラウンドから来ているので、私がリチウムで見ている空のクラス(モデル)は不安定です。
私が何かをしない限り、私は財産を持っていません。

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の場合は正常、Lithiumの場合はnormal、
  2. プロパティを追加すると(Eclipseでコード補完できるようになります)、ORMの機能が損なわれますか?
2
フィールドをデータベースに追加するたびにコードを変更する必要はありません!
追加された 著者 psparrow,

1 答え

リチウムはかなり進歩しており、多くのフレームワークではないいくつかのPHP機能を利用しています。 PHPのオブジェクトにプロパティを直接追加することはできますが、フレームワークを使用する場合は、ベストプラクティスの内容とアプリケーションに与える影響を調べる必要があります。

Lithiumでは、 MyModel :: create()または MyModel :: find()は、データベースレコードまたはドキュメントを表すエンティティオブジェクトまたはエンティティオブジェクトのコレクションを返します。

エンティティプロパティは保護された $ _ updated 配列と $ _ data 配列に格納され、 __ get __ set メソッドでアクセスされます。

So, when you reference $myModel->title, you're getting/setting $myModel->_updated['title'].

Then, when you call $myModel->save(), the data in $_updated is saved to the database record or document.

https://github.com/UnionOfRAD/lithium/blob/master/を参照してください。 data/Entity.php を参照してください。

3
追加された
だから、それはリチウムのことを意味し、実際の特性のコーディングは悪いことですか? (コードの補完のためだけにハプニングしています。プロパティをコード化するのは良い考えではありません。
追加された 著者 ton.yeung,
あなたはこれを明示的には言いませんが、プロパティを追加することで、リチウムが行うマッピングが短絡されると私は考えています。変更は $ _ 配列には格納されず、データベースに保存されません。したがって、プロパティを手動で追加すると、実際に問題が発生します。
追加された 著者 benzado,
右。エンティティデータを操作するときは、離れたままにしたいと思うでしょう。リチウムと一緒にお仕事をお楽しみください!
追加された 著者 psparrow,
Model :: create()またはModel :: find()でエンティティを取得している場合は、実際にはEntityオブジェクトを拡張していません。単に$ myModel-> customField = 1を設定すると、その値が$ _updated配列に設定されます。モデルで返されたエンティティがフィールドマッピングを完全に処理するため、Entityオブジェクトをまだ拡張する必要はありません。
追加された 著者 psparrow,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com