Ik heb even een vraag. Ik ben inmiddels bezig met een eigen framework. Het is een zeer kleine, maar gemakkelijk bruikbare applicatie. Ik zit alleen met een probleem. Ik kan inmiddels Controllers aanmaken met bijbehorende Views. Ook kan ik in de Controller een variabele aanmaken die ik in de View weer kan oproepen. Niet echt geavanceerd dacht ik zelf. Ik wil alleen nu een 'Layout' om mijn Views heen hebben. Zo hoef ik niet altijd een hele HTML pagina aan te maken, etc. Ik heb het inmiddels voor elkaar gekregen met de functie 'ob_get_contents', niet echt een mooie manier. Mijn vraag was dus, is er geen betere (mooiere) manier om dit te doen?

Index.php (Controller)

<?php
class Index extends Controller {      
       
    /**
     * The index action, main action of the controller 
     */
    public function IndexAction() {
        $data = array('firstName' => 'Allard', 'lastName' => 'Jansen' );
        $this->render('Index.phtml', $data);
    }
    
    /**
     * The index action, main action of the controller 
     */
    public function ContactAction() {
        $this->render('Contact.phtml');
    }
    
}
?>


Controller.php

<?php
class Controller extends View {   
   
}
?>


View.php

<?php
class View {
    
    public $_content;
    
    /**
     * Render the controller around the view
     * 
     * @param type $fileName string
     * @param type $data array
     */
    public function render( $fileName, $data = null ) {
        if( is_array($data) ) {
            extract($data);
        }
        
        ob_start();
        require 'Views/' . get_called_class() . '/' . $fileName;
        $this->_content = ob_get_contents();
        ob_end_clean();

        require 'Views/Layout.phtml';
    }
   
}
?>
[offtopic]Huh, eigen framework? Je was zo lekker bezig in Zend Framework? Ik weet dat Zend Framework dit ook oplost met output_buffering geloof ik.. Als je een klein framework zoekt, probeer dan eens Silex![/offtopic]
Naast de opmerking van Kees, de view moet toch een property van de controller zijn? Daarnaast doet Zend_View ook wat met [php]streams[/php].

Reageren