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 :

Utiliser un objet dans une vue [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 30
    Points
    30
    Par défaut Utiliser un objet dans une vue
    Bonsoir,

    Mon "routeur" instancie test_model et lance mon fichier /views/test/méthode.php.

    Pour mes testes, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Test2_model
    {     
    	function __construct()
    	{
    		echo "model de test2 construit </br>"; 
    		$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
    	        $test2 = json_decode($json);    
             	echo $test2->a;
    	}
     
    }
    à l'intérieur de la classe, $test2->a donne bien le résultat attendu.
    Par contre, dans mon fichier template:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<h3><?php echo $test2->a ;?></h3>
    ne donne rien.

    ça me semble logique, mais je ne trouve pas la manière de faire.

    Merci
    Ju

  2. #2
    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
    comment ton controller envoie les données a ta vue ?


    ps : c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function __construct()

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    Merci

    Citation Envoyé par stealth35 Voir le message
    comment ton controller envoie les données a ta vue ?
    Je teste mon routeur d'URL . Là je suis dans le cas l'hypothèse où je n'ai pas de contrôleur de test2 mais une vue et un modèle:

    Pour info, la méthode de mon router qui se charge du dispatching (version temporaire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    	public static function dispatch($object,$action) {
    	        if (file_exists('appli/models/'.$object.'_model.php'))
    	        {
     
    	                include 'appli/models/'.$object.'_model.php';
    	               	$model_class = $object."_model";    
    		        		  $model = new $model_class();
    	        }
    	        if (file_exists('appli/controllers/'.$object.'_controller.php'))
    	        {
     
    	                include 'appli/controllers/'.$object.'_controller.php'; 
    		        			$controller_class = $object."_controller";    
    		        			$controller = new $controller_class();	                
    	        }
    	        elseif (file_exists('appli/views/'.$object.'/'.$action.'.php'))
    	        {
     
    	                include 'appli/views/'.$object.'/'.$action.'.php' ;	                
    	        }
    	        else
    	        {
     
    	                echo 'rien à faire ici';
    	        }
     
    	}

  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
    va falloir faire un extract a un moment donnée

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    va falloir faire un extract a un moment donnée
    Ok merci je vais bouquiner ça.

    Mais je ne comprends pas pourquoi il n'est pas possible d'accéder aux propriétés de mon objet.

  6. #6
    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
    Citation Envoyé par leccux Voir le message
    Ok merci je vais bouquiner ça.

    Mais je ne comprends pas pourquoi il n'est pas possible d'accéder aux propriétés de mon objet.
    parce que $test2 n'existe que dans le scope de le methode __construct

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    parce que $test2 n'existe que dans le scope de le methode __construct
    j'imagine que c'est l'équivalant de la porté des bloques pour les variables (?).
    Donc, comment faire en sorte que mon objet soit accessible à ma vue (et qu'il ne soit plus réservé à la méthode de l'objet qui l'instancie)?

    J'ai essayé return $test2 mais sans résultat. extract j'ai du mal à saisir.

    Merci beaucoup
    ju

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    cette fonction dans mon model ne me permet pas d'utiliser mon object dans la vue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $test2->a ;?>
    ne donne malheureusement rien

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,
    comment faire en sorte que mon objet soit accessible à ma vue (et qu'il
    ne soit plus réservé à la méthode de l'objet qui l'instancie)?
    Il faut que l'objet qui instancie un autre objet l'expose via un getter par exemple ou que l'instance interne soit accessible via la visibilité de sa variable : public/protected (restrictions).
    Enfin il te reste la méthode la plus sale : global... (oublie que je t'en ai parlé)

  10. #10
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par Xysyo Voir le message
    Bonjour,
    Enfin il te reste la méthode la plus sale : global... (oublie que je t'en ai parlé)
    Une variable glo quoi? non tu ne m'en as jamais parlé

    Merci.
    En m'inspirant de ta réponse, j'ai imaginé cette solution:

    Dans le model:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	  $test2 = json_decode($json, true);
    		foreach ($test2 as $key => $value) { 
    			$this->$key = $test2[$key];   
    		}
    Et dans la vue:
    Je trouve la solution pas dégueu, mais si tu as plus élégant, je suis preneur.

    Bien cordialement
    Bonne fin d'année.

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

Discussions similaires

  1. utilisation d'objet dans une class
    Par turican2 dans le forum Langage
    Réponses: 4
    Dernier message: 19/02/2009, 15h43
  2. Utilisation d'un 'record' dans une vue
    Par olof dans le forum SQL
    Réponses: 27
    Dernier message: 03/04/2008, 18h29
  3. Réponses: 23
    Dernier message: 21/02/2007, 12h53
  4. Utiliser des objets SWING dans une vue RCP
    Par manuga72 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 20/10/2006, 17h26
  5. [delphi 5,6,7] utiliser un objet dans une procédure
    Par wizdom dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2006, 15h38

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