1

PHPオブジェクトをデータベースに保存するのに最適な形式は何ですか?オブジェクトには複数のパラメーターとメソッドがあり、XMLまたはバイナリまたはその他の形式ですか?

例えば ​​:

$me = new Person();
$me->code= '007';
$me->name='antoine';
$me->store(); //this object is now stored into postgresql in Binary format or XML or ... you tell me !
//after few days : 
$object = $database->retrievePersonByCode('007');
echo "my name is".$object->name;

どうやってするか ?

4

3 に答える 3

2

You will need to serialize it first. PHP has a serialize() function which you can use. But you should pay attention to this when using it:

Object's private members have the class name prepended to the member name; protected members have a '*' prepended to the member name. These prepended values have null bytes on either side.

Depending on the size of the object you wish to serialize you can use TEXT, MEDIUMTEXT or even LONGTEXT.

于 2013-08-06T00:43:27.270 に答える
0

個人的には、どの言語でも簡単に読み戻せるので、json で標準化しました。さらに、人間が判読可能 (バイナリーではない) であり、XML ほど冗長ではありません。Postgres は実際には json をデータ型としてサポートしているため、これは追加のボーナスです。

于 2013-08-06T01:38:55.867 に答える
-1

この質問は、ORM とオブジェクト指向の永続層の存在の最初の石です。

PHP オブジェクトをシリアライズされた方法 (テキスト、json、xml など) でそのまま保存すると、オブジェクトの特定の属性に対してクエリを実行できなくなります (つまり、例で 18 歳未満のすべての Personn オブジェクトを探します)。 )。インスタンス内の 1 つの属性を変更すると、オブジェクト全体が更新されます。

または、PHP オブジェクトをデータベース内の実際のテーブルまたはセットに転置するコード レイヤーを使用します。抽象化レイヤー (Doctrine、Propel、その他何千もの...) を使用する ORM ファミリがあり、Postgres (Pomm) のみを使用する OMM ファミリがあります。

于 2013-08-07T13:17:33.970 に答える