PHP : Surchage du type d'un objet

Résolu/Fermé
Ouam - 7 avril 2011 à 05:34
 Ouam - 7 avril 2011 à 10:42
Bonjour,

En utilisant la SPL j'ai créé un objet que je peux parcourir comme un array, ce dernier à toute les fonctionnalités d'un array.

Par contre le type est toujours "Object", ce qui est ennuyeux puisqu'en testant mon objet avec "is_array($monObjet)" je reçois false.

Est-il possible de surcharger le type de $monObjet afin de pouvoir renvoyer "array" plutôt qu'"object" ?

Je n'ai malheureusement pas la possibilité de modifier la façon de tester cette variable puisque ce dernier est réalisé par un moteur de template (Smarty) et non par mon propre code. Du coup mon objet n'est pas considéré comme un tableau et n'est pas parcouru comme je le souhaiterais.

Si quelqu'un a déjà rencontré ce problème ou a une idée sur le sujet ...

Merci à vous.

1 réponse

Profil bloqué
7 avril 2011 à 09:53
Bonjour,

en PHP, on peut modifier le type d'un objet avec un cast 'sauvage'
<?php
$s='fdsqf';

if (is_array((array)$s)) {
echo 'true';
}
?>

Attention, méthode pas propre ;)
0
Merci pour ta réponse rapide.
Effectivement on peut faire comme ça, mais mon souci est que la vérification du type se fait dans un code qui n'est pas le mien (celui de Smarty), donc je n'ai pas la possibilité de caster mon objet.

Donc il faudrait vraiment que mon objet soit vu par PHP comme un Array.

Comme il est possible de surcharger des fonctionnalités de PHP (comme l'utilisation des [ ]) il est peut-être possible de surcharger également le type ....
0
Profil bloqué
7 avril 2011 à 10:33
as-tu essayé d'hériter ta class de ArrayObject ?
0
Bon en fait je viens de réalisé que je suis un peu con et que ta réponse est complètement réalisable.

Il suffit que je le cast au moment du passage en paramètre ...... (oui je sais c'est dur aujourd'hui).

Même si ce n'est pas le plus propre, ça fonctionne, je marque le problème comme résolu.
Si jamais je trouve autre chose de mieux j'apporterai un complément d'informations.

Merci à vous.
0