以下课程工作正常,尝试学习MVC,我只想知道原因。这可能很简单,但我无法理解。
所以在控制器类中,我启动了View对象(在其他地方定义)并分配给$ this->视图。现在为什么这没有给我任何错误,因为我没有在控制器类的任何地方定义视图属性,也没有扩展。
与错误类相同。为什么$ this-> view-> msg工作正常,因为msg属性既未在父级也未在Error控制器本身中定义。
这些是如何正常工作的。
<?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');
}
}
?>
答案 0 :(得分:4)
您可以随时动态地向对象添加属性,不需要事先声明它们;就像常规变量一样。就是这样。
缺点是这些属性将是public
,这可能是你不想要的,并且这是不好的做法,因为它使得类的结构不那么明显。