2013-08-06 2 views
1

Интересно, какой лучший формат для хранения объектов PHP в базе данных, объект имеет несколько параметров и методов, XML или двоичный или другие форматы?лучший формат для хранения php-объекта для базы данных postgresql

, например:

$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; 

Как сделать это?

ответ

2

Сначала необходимо его сериализовать. PHP имеет функцию serialize(), которую вы можете использовать. Но вы должны обратить внимание на это при его использовании:

Личные члены объекта имеют имя класса, присвоенное члену ; защищенные члены имеют «*», добавленные к имени участника. Эти предварительные значения имеют нулевые байты с обеих сторон.

В зависимости от размера объекта, который вы хотите сериализовать вы можете использовать TEXT, MEDIUMTEXT или даже LONGTEXT.

0

Лично я стандартизован на json, так как любой язык может легко прочитать его обратно. Плюс это читаемый человеком (не двоичный) и не такой же подробный, как XML. Поскольку Postgres фактически поддерживает json как тип данных, это дополнительный бонус.

0

Этот вопрос является первым камнем существования ORM и объектно-ориентированных слоев устойчивости.

Либо вы храните объекты PHP как в сериализованном виде (текст, json, xml, whatever ...), и вы теряете возможность выполнять запросы по определенному атрибуту ваших объектов (т.е. искать все объекты Personn моложе например, 18). Изменение одного атрибута в вашем экземпляре означает обновление всего объекта.

Или вы используете слой кода, который переносит ваши объекты PHP в реальные таблицы или множества в базе данных. Существует ORM familly, который использует уровень абстракции (Doctrine, Propel и тысячи других ...), и есть OMM familly, который просто использует Postgres (Pomm).

Смежные вопросы