Que les ORM sont bien plus adaptés
Une base de données stocke des données dans des tables, et des relations entre ces tables. Elles sont optimisées pour ça.
Si tu stockes un objet sous forme sérialisée (quelle que soit cette sérialisation), comment vas-tu effectuer des recherches comme "tous les objets dont le prix est entre 200 et 300", ou encore "le métier le plus utilisé", ou bien "les seelies qui ont un nom qui commence par 'A'" ?
À la rigueur il y a des bases de données où tu peux stocker des champs XML et faire des requêtes XPath dessus (je sais qu'Oracle le fait, je crois que Postrgre le fait aussi), ça peut être une idée (la sérialisation XML des objets en PHP5 se fait assez facilement :
---------------------------------------------------------------------------- Une base de données stocke des données dans des tables, et des relations entre ces tables. Elles sont optimisées pour ça.
Si tu stockes un objet sous forme sérialisée (quelle que soit cette sérialisation), comment vas-tu effectuer des recherches comme "tous les objets dont le prix est entre 200 et 300", ou encore "le métier le plus utilisé", ou bien "les seelies qui ont un nom qui commence par 'A'" ?
À la rigueur il y a des bases de données où tu peux stocker des champs XML et faire des requêtes XPath dessus (je sais qu'Oracle le fait, je crois que Postrgre le fait aussi), ça peut être une idée (la sérialisation XML des objets en PHP5 se fait assez facilement :
webmouse a écrit :hey ok i have found the answer myself with my little info about php
ok i want to give you the codes
perhaps you like this...
Code PHP :<?php
class Serializer
{
private static $Data;
private function GetaArray($arrayValue)
{
foreach ($arrayValue as $Member)
{
$this->SerializeClass($Member,get_class($Member));
}
}
public function Serialize($ObjectInstance,$ClassName)
{
Serializer::$Data.="<Root>";
$this->SerializeClass($ObjectInstance,$ClassName);
Serializer::$Data.="</Root>";
return Serializer::$Data;
}
public function SerializeClass($ObjectInstance,$ClassName)
{
Serializer::$Data.="<".$ClassName.">";
$Class=new ReflectionClass($ClassName);
$ClassArray= ((array)$ObjectInstance);
$Properties=$Class->getProperties();
$i=0;
foreach ($ClassArray as $ClassMember)
{
$prpName= $Properties[$i]->getName();
Serializer::$Data.="<".$prpName.">";
$prpType= gettype($ClassMember);
if ($prpType=='object')
{
$serializerinstance= new Serializer();
$serializerinstance-
>SerializeClass($ClassMember,get_class($ClassMember));
}
if ($prpType=='array')
{
$this->GetaArray($ClassMember);
}
else
{
Serializer::$Data.=$ClassMember;
}
Serializer::$Data.="</".$prpName.">";
$i++;
}
Serializer::$Data.="</".$ClassName.">";
return Serializer::$Data;
}
public function WriteXmlFile($XmlData,$FilePath)
{
$Xml = simplexml_load_string($XmlData);
$Doc=new DOMDocument();
$Doc->loadXML($Xml->asXML());
$Doc->save($FilePath);
}
public function DeserializeClass($FilePath)
{
$Xml=simplexml_load_file($FilePath);
return $this->Deserialize($Xml);
}
public function Deserialize($Root)
{
$result=null;
$counter=0;
foreach ($Root as $member)
{
$instance = new ReflectionClass($member->getName());
$ins=$instance->newInstance();
foreach ($member as $child)
{
$rp=$instance->getMethod("set_".$child->getName());
if (count($child->children())==0)
{
$rp->invoke($ins,$child);
}
else
{
$rp->invoke($ins,$this->Deserialize($child->children()));
echo $child;
}
}
if (count($Root)==1) {
return $ins;
}
else
{
$result[$counter]=$ins;
$counter++;
}
if ($counter==count($Root)) {
return $result;
}
}
}
}
and using
Code PHP :
<?php
$myclassins= new Serializer();
$Xml= $myclassins->Serialize($instance,'classname');
$thing->WriteXmlFile($Xml,'c:\ersin.xml');
$result=$myclassins->DeserializeClass('c:\ersin.xml');