PHP:如何在最后呈现视图?

PHP:如何在最后呈现视图?,php,controller,Php,Controller,为了好玩和学习,我正在尝试创建自己的小PHP框架。 但现在我坚持这个观点 class Index extends Controller { function __construct() { parent::__construct(); $this->view->msg = 'This message is sended over the view.'; $this->view->content = 'This i

为了好玩和学习,我正在尝试创建自己的小PHP框架。 但现在我坚持这个观点

class Index extends Controller {

    function __construct() {
        parent::__construct();

        $this->view->msg = 'This message is sended over the view.';
        $this->view->content = 'This is the INDEX-Content.';
        $this->view->render('index/index');
    }

    public function something() {
        // do something
        // and render it
        $this->view->content = 'This is the content from something.'
    }
所以我能做的就是误用_析构函数并在这里呈现我的输出。但我想这与这种方法的目的背道而驰

当我将我的意图与Zend Framework或Laravel进行比较时,他们会使用after方法来渲染视图

但我不明白哪种方法可以做到这一点。构造函数是第一个,析构函数是最后一个,必须调用它之间的所有内容才能工作。
有什么神奇的方法吗?

您应该处理您的HTTP I/O

这就是你能做到的 这就是请求的处理方式 这就是行动的方式
尽可能多地浏览回购协议,Kohana是一个简单但功能强大的框架。您可以学习一两件事

您可以在主控制器类中执行以下操作:

public function __call($method,$arguments) {
    if(method_exists($this, $method)) {
        call_user_func_array(array($this,$method),$arguments); //this is where the function is called
        $this->render();
    }
}
您可以消除内置构造函数、析构函数和其他不希望自动渲染的函数

您还可以在主控制器类中设置一个变量,autoRender将default设置为false,并在希望生成预定义输出时将其设置为true

此外,在_call函数中,您可以使用$method变量为视图预定义名称。例如,假设框架中有一个名为Views的文件夹,其中有一个名为something.view\u extension的文件

您可以这样发送到渲染:$this->render$method.'.view_extension'


这只是一个你可以解决的大主意

请不要把观点和事实混为一谈。