IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP : Surchage du type d'un objet [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Chef de projet en SSII
    Inscrit en
    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 : 4
    Points
    4
    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.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Un simple cast devrait faire l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $obj = new stdClass();
    $obj->nom = 'Pierre';
    $obj->prenom = 'Paul';
     
    var_dump($obj);
    var_dump((array)$obj);
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Profil pro
    Chef de projet en SSII
    Inscrit en
    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 : 4
    Points
    4
    Par défaut
    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 ....

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($truc instanceof Traversable)

  5. #5
    Candidat au Club
    Profil pro
    Chef de projet en SSII
    Inscrit en
    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 : 4
    Points
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/11/2005, 09h35
  2. Renvoyer un type structuré dans objet OLE
    Par Bleuarff dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/05/2005, 20h05
  3. [Language]Type d'un objet null
    Par Calambo dans le forum Langage
    Réponses: 8
    Dernier message: 26/04/2005, 10h06
  4. [POO] Comment connaître le type d'un objet
    Par zizou39 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/03/2005, 09h46
  5. Comment detecter le type d'un objet?
    Par nickylarson dans le forum C++Builder
    Réponses: 3
    Dernier message: 24/06/2003, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo