将php对象存储到postgresql数据库的最佳格式

时间:2013-08-06 00:30:40

标签: php postgresql

我想知道将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;

怎么做?

3 个答案:

答案 0 :(得分:2)

您需要先将其序列化。 PHP有一个serialize()函数,您可以使用它。但是在使用它时你应该注意这个:

  

Object的私有成员具有该成员前面的类名   名称;受保护的成员在成员名称前面加上'*'。这些   前置值在任何一方都有空字节。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

您可以按照序列化的方式(文本,json,xml,等等)存储PHP对象,并且您无法对对象的特定属性执行查询(即查找所有小于对象的Personn对象) 18例)。在实例中更改一个属性意味着更新整个对象。

或者您使用代码层将PHP对象转换为数据库中的实际表或集。 ORM familly使用抽象层(Doctrine,Propel和数以千计......),而且还有使用Postgres(Pomm)的OMM家族。