PHP:如何在最后渲染视图?

时间:2014-06-27 12:39:16

标签: php controller

我正在尝试创建自己的小PHP框架,只是为了娱乐和学习。 但现在我坚持使用View。

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.'
    }

所以我能做的就是滥用__destruct并在这里渲染我的输出。但我想这是违背这种方法的目的。

当我将我的意图与例如Zend Framework或Laravel他们使用例如一个after()方法来渲染视图。

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

2 个答案:

答案 0 :(得分:0)

您应该处理HTTP I / O

尽可能多地嗅探回购,Kohana是一个简单而强大的框架。 (你可以学到一两件事)

答案 1 :(得分:0)

您可以在主Controller类中执行以下操作:

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();
    }
}

你可以消除听力构造函数,破坏和其他你不想自动渲染的函数。

您还可以在主Controller类中使用变量,autoRender将default设置为false,并在您想要生成预定义输出时将其设置为true。

同样在_call函数中,您可以使用$ method变量为视图指定预定义的名称。例如,假设您的框架中有一个名为Views的文件夹,那里有一个名为something.view_extension的文件。

你可以像这样发送:$ this-> render($ method。'。view_extension');

你可以解决一个很大的想法。 :)