2010-05-28 2 views
1

Je crée mon propre framework PHP-MVC. J'ai une question concernant Controller and View Association. Je aime la façon dont le Zend Framework utilise vue dans le contrôleur comme suit:Implémentation d'une association contrôleur/vue efficace comme ZendFramework

$this->view->data = 'Data here'; 

de sorte qu'il peut être utilisé en vue comme suit:

echo $this->data; 

Je me demande comment puis-je mettre en œuvre cette association. Je veux supprimer les codes entre /** **/ et vouloir remplacer avec quelques fonctions magiques. Mes codes pour le contrôleur comme suit:

class UserController extends Controller{ 
    /************************************/ 
    public function __construct(){ 
    $this->view = new View(); 
    $this->view->setLayout('home'); 
    } 
    function __destruct(){ 
    $this->view->render(); 
    } 
    /************************************/ 
    public function index(){ 
    $this->redirect('user/login'); 
    } 
    public function login(){ 
    } 
    public function register(){ 
    } 
    public function forgotPassword(){ 
    } 
} 
+1

Vous voulez supprimer le constructeur et destructor? – BoltClock

+0

Zend sérieusement permet seulement une vue par action de contrôleur? –

Répondre

1

Vous n'avez pas vraiment besoin de fonctions magiques pour implémenter cela. Vous pouvez juste faire:

$this->view->var1 = 'val1'; 

Créer une méthode dans votre contrôleur appelé set ou assign qui prend un nom et la valeur et de stocker dans un tableau. Avant d'appeler vue, boucle à travers ce tableau et attribuez à votre objet de vue:

foreach ($this->viewVars as $viewVar) { 
    $this->view->$viewVar['name'] = $viewVar['val']; 
} 
0

Utilisez la méthode magique __set() et __get().

protected $ _data = array();

public function __set($name, $value) 
{ 
    $this->_data[$name] = $value; 
} 

public function __get($name) 
{ 
    return $this->_data[$name]; 
} 

Ensuite, mettre en œuvre la gestion des erreurs lors de la récupération des valeurs qui ne sont pas définies, etc ...

Questions connexes