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

您需要先对其进行序列化。PHP 有一个可以使用的serialize()函数。但是在使用的时候要注意这一点:

对象的私有成员在成员名前加上类名;受保护成员的成员名称前有一个“*”。这些前置值在两边都有空字节。

根据您希望序列化的对象的大小,您可以使用TEXTMEDIUMTEXT甚至LONGTEXT.

于 2013-08-06T00:43:27.270 回答
0

就我个人而言,我已经对 json 进行了标准化,因为任何语言都可以轻松读取它。此外,它是人类可读的(不是二进制的)并且不像 XML 那样冗长。由于 Postgres 实际上支持 json 作为数据类型,这是一个额外的好处。

于 2013-08-06T01:38:55.867 回答
-1

这个问题是 ORM 和面向对象持久层存在的第一块石头。

要么您以序列化的方式(文本、json、xml 等等)存储 PHP 对象,要么失去对对象的特定属性执行查询的能力(例如,查找所有小于 18 岁的 Personn 对象) )。更改实例中的一个属性意味着更新整个对象。

或者您使用代码层将您的 PHP 对象转换为数据库中的真实表或集合。有使用抽象层(Doctrine、Propel 等等)的 ORM 家族,还有只使用 Postgres(Pomm)的 OMM 家族。

于 2013-08-07T13:17:33.970 回答