Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
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 12/09/2011, 13h25   #1
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 248
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 248
Points : 1 506
Points : 1 506
Par défaut question purement de curiosite

Salut la compagnie (mais pas la 7eme)

j'utilise ZF depuis peu, et je me pose une question...

pour passer des donnees depuis le controleur vers la vue, on passe de $this->view->toto a $this->toto.

quelqu'un sait comment a ete code ce processus ? (ou alors connait grosso modo le procede ?)
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 13h47   #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
Au pif je dirais que la classe de Vue implémente les méthodes magique __get() et/ou __set()

Doc php sur le sujet
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 14h15   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
non c'est un une manip avec un require + ob_start

EDIT :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class View
{
    public function render($file)
    {
        ob_start();
        require $file;
        return ob_get_clean();
    }
}
 
class Controller
{
    public function action()
    {
         $this->view = new View();
         $this->view->name = 'Doksuri';
         return $this->view->render('view.html');
    }
}
 
$controller = new Controller();
echo $controller->action();
view.html
Code :
hello <?php echo $this->name ?>
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 14h36   #4
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 248
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 248
Points : 1 506
Points : 1 506
pour le coup, je ne te suis pas stealth35.

si je reprend l'execution du code... dans l'ordre, tu as

$this->view->name = 'Doksuri';
et hello <?php echo $this->name ?>

je ne comprends pas comment ob_start peut passer de $this->view->name a $this->name

la il y a un detail qui m'echape encore...
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 14h42   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
fais comme ca si le ob_start te perturbe

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class View
{
    public function render($file)
    {
        require $file;
    }
}
 
class Controller
{
    public function action()
    {
        $this->view = new View();
        $this->view->name = 'Doksuri';
        $this->view->render('view.html');
    }
}
 
$controller = new Controller();
$controller->action();
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 14h44   #6
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 248
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 248
Points : 1 506
Points : 1 506
non, le ob_start ne me perturbe pas, c'est ... ou est passe la partie "->view" ?
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 14h46   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par Doksuri Voir le message
non, le ob_start ne me perturbe pas, c'est ... ou est passe la partie "->view" ?
regarde maintenant j’enlève le require

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class View
{
    public function render($file)
    {
        ?>
hello <?php echo $this->name ?>
        <?php
    }
}
 
class Controller
{
    public function action()
    {
        $this->view = new View();
        $this->view->name = 'Doksuri';
        $this->view->render('view.html');
    }
}
 
$controller = new Controller();
$controller->action();
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 14h53   #8
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 248
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 248
Points : 1 506
Points : 1 506
tain, je vais passer pour un abutis... mais je crois qu'il me faudra un dessin...>_<

ou alors, t'es en train de dire que le "->view" peut avoir le nom qu'il veut du moment que ca concorde avec le nom de la class de vue ?

genre
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Toto
{
    public function render($file)
    {
        ?>
hello <?php echo $this->name ?>
        <?php
    }
}
 
class Controller
{
    public function action()
    {
        $this->toto = new View();
        $this->toto->name = 'Doksuri';
        $this->toto->render('view.html');
    }
}
 
$controller = new Controller();
$controller->action();
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 14h58   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
non la ton code va pas marcher, on ajoute juste une propriété a un objet c'est normale qu'on y accède après

fait un

Code :
1
2
3
4
5
6
7
8
9
10
public function render($file)
{
    var_dump($this);
}
/*
object(View)#2 (1) {
  ["name"]=>
  string(7) "Doksuri"
}
*/
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/09/2011, 15h10   #10
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 248
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 248
Points : 1 506
Points : 1 506
CA Y EST !!!!

ca a fait "tilt" dans ma tete...."on ajoute juste une propriété a un objet"
je ne sais pas pourquoi pour moi $this->view... faisaient parti d'un objet A et $this->view->... un objet B
Oh la vache....depuis le temps que je me questionne la dessus.. pourquoi mon cerveau n'a jamais vu ca ???
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2011, 15h17   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
ensuite le ob_start te permet d'avoir le résultat dans une chaine, ce qui te permet de bosser avec un layout

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class View
{
    public function render($file)
    {
        ob_start();
        require $file;
        $this->content = ob_get_clean();
 
        require 'layout.html';
    }
}
 
class Controller
{
    public function action()
    {
        $this->view = new View();
        $this->view->name = 'Doksuri';
        $this->view->render('view.html');
    }
}
 
$controller = new Controller();
$controller->action();
layout.html
Code :
1
2
3
<div id="content">
    <?php echo $this->content ?>
</div>
__________________
http://blog.stealth35.com/
stealth35 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 23h55.


 
 
 
 
Partenaires

Hébergement Web