下面的类工作很好,试图学习MVC,我只是想知道为什么。这句话可能很简单,但我却看不懂。
-
所以在控制器类中,我已经启动了视图对象(在其他地方定义)并分配给$this->视图。现在为什么这没有给我任何错误,因为我没有在控制器类的任何地方定义视图属性,也没有扩展。
-
错误类也是如此。为什么$this->view->msg工作得很好,因为msg属性在父节点和错误控制器本身都没有定义。
它们是如何工作的
<?php
class Controller {
function __construct() {
echo 'main controller <br/>';
$this->view = new View();
}
}
?>
错误类扩展控制器
<?php
class Error extends Controller {
function __construct() {
parent::__construct();
echo 'This is error mate';
$this->view->msg = 'This page does not exit by msg';
$this->view->render('error/index');
}
}
?>
您可以随时动态地为对象添加属性,它们不需要事先声明;就像常规变量一样。就是这样。
缺点是这些属性将是public
,这可能不是您想要的,而且这是一个不好的实践,因为它使类的结构不那么明显。