Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2011, 06h00   #1
Invité de passage
 
Chef de projet en SSII
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 2
Points : 2
Par défaut PHP : Surchage du type d'un objet

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.
delalongere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 08h35   #2
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Un simple cast devrait faire l'affaire :

Code :
1
2
3
4
5
6
$obj = new stdClass();
$obj->nom = 'Pierre';
$obj->prenom = 'Paul';
 
var_dump($obj);
var_dump((array)$obj);
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 10h11   #3
Invité de passage
 
Chef de projet en SSII
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 2
Points : 2
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 ....
delalongere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 10h17   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Code :
if($truc instanceof Traversable)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 10h40   #5
Invité de passage
 
Chef de projet en SSII
Inscription : avril 2011
Messages : 4
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 4
Points : 2
Points : 2
Citation:
Code :
1
2
3
4
5
6
$obj = new stdClass();
$obj->nom = 'Pierre';
$obj->prenom = 'Paul';
 
var_dump($obj);
var_dump((array)$obj);
Bon en fait je viens de réalisé que je suis un peu con et que ta réponse grunk est complètement réalisable.

Il suffit que je le cast au moment du passage en paramètre ...... (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.
delalongere est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h45.


 
 
 
 
Partenaires

Hébergement Web