我正在尝试创建自己的小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()方法来渲染视图。
但我不明白哪种方法可以做到这一点。构造函数是第一个,析构函数是最后一个,它之间的所有东西都必须被调用才能工作。 这有什么“神奇”的方法吗?
答案 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');
你可以解决一个很大的想法。 :)