Eléphant du PHP |
121 Messages
22 août 2007, 20:07
Ben moi non plus, c'est complètement débile. Du coup je suis en train de créer un 'workaround' pour transformer le tableau associatif en un objet d'une classe spécifique, avec ce qu'il faut pour l'initialiser. Pff, c'est n'importe quoi.
Je vais aussi essayer le code chez 1and1 pour voir s'ils s'en sortent mieux que OVH. Je vous tiens au jus. En attendant voici un remplaçant pour fetch_object:
Code : Tout sélectionner
function FetchObject($rc, $class=NULL)
{
//return mysql_fetch_object($rc, $class);
$rc = mysql_fetch_assoc($rc);
if (!$rc)
{
return;
}
// $_SESSION['log'][] = "class: $class, assoc: <pre>" . print_r($rc, true) . '</pre>';
if ($class)
{
$object = new $class;
foreach ($rc as $key => $value)
{
$object->$key = $value;
}
// $_SESSION['log'][] = "FETCH OBJECT ($class) : <pre>" . print_r($rc, true) . '</pre>';
$methods = get_class_methods($class);
$low = strtolower($class);
foreach ($methods as $name)
{
// $_SESSION['log'][] = "compare '$name' ?= '$low' : " . ($name == $low);
if ($name == $low)
{
// $_SESSION['log'][] = "call initializer: $class";
$object->$class();
break;
}
}
$rc = $object;
}
else
{
$rc = (object) $rc;
}
// $_SESSION['log'][] = "FETCH OBJECT ($class) : <pre>" . print_r($rc, true) . '</pre>';
return $rc;
}
Bon, ça marche, mais le constructeur est appelé deux fois (objet vide / objet rempli par nos soins).
Merci pour ton aide. Si tu as vent d'une solution meilleure que mon 'truc' merci de m'en faire part.
Bonne continuation ++
*** EDIT ***
Grâce à la ligne "SetEnv PHP_VER 5" dans le fichier .htaccess, on peut utiliser PHP5 sur les serveur OVH. Et Ô miracle, mysql_fetch_object() marche comme sur des oeufs, il s'agit donc bien d'un problème lié au PHP4. Bref, ma fonction ne sert plus à grand chose, mais elle pourra peut-être être utile à d'autres qui n'ont pas la possibilité de choisir qu'elle version de PHP exécuter.