Bonjour,
Je voudrais savoir s'il existe un moyen facile de faire du type casting sur les objets ? (passé d'une classe à une classe dérivé). Je voudrais faire la même chose qu'en Java :
<?php
class maClasse {
}
class monAutreClasse extends maClass {
function maFonction(){
}
}
$objet = new MaClasse();
// Traitements
$autreObjet = (monAutreClasse)$objet;
?>
Actuellement, j'en suis réduit à utiliser une fonction personnelle qui fait un cast bourrin :
function castObject(&$obj, $class){
$strlen = strlen($class);
$class = strtolower($class);
/* On transforme l'objet en une chaine de caractère */
$serialize = serialize($obj);
/* On modifie la chaine de caractère, en remplaçant la classe de l'objet par la nouvelle classe */
$serialize = preg_replace('/^O:[0-9]+:"[^"]+":([0-9]+):{(.*)}$/', 'O:'.$strlen.':"'.$class.'":$1:{$2}', $serialize);
/* On repasse la chaine de caractère en un objet */
$obj = unserialize($serialize);
/* On test si l'objet de fin correspond bien à l'objet voulut */
if(is_object($obj) && strtolower(get_class($obj)) == $class){
return true;
} else {
return false;
}
}