使用此关键字如何使用未定义的属性?

时间:2013-06-09 17:38:02

标签: php

以下课程工作正常,尝试学习MVC,我只想知道原因。这可能很简单,但我无法理解。

  1. 所以在控制器类中,我启动了View对象(在其他地方定义)并分配给$ this->视图。现在为什么这没有给我任何错误,因为我没有在控制器类的任何地方定义视图属性,也没有扩展。

  2. 与错误类相同。为什么$ this-> view-> msg工作正常,因为msg属性既未在父级也未在Error控制器本身中定义。

  3. 这些是如何正常工作的。

            <?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');
        }
    
    }
    
    ?>
    

1 个答案:

答案 0 :(得分:4)

您可以随时动态地向对象添加属性,不需要事先声明它们;就像常规变量一样。就是这样。

缺点是这些属性将是public,这可能是你不想要的,并且这是不好的做法,因为它使得类的结构不那么明显。