Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义的属性如何使用此关键字?_Php - Fatal编程技术网

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

Php 未定义的属性如何使用此关键字?,php,Php,下面的课程很好,我正在努力学习MVC,我只是想知道为什么。这可能很简单,但我无法理解 所以在控制器类中,我启动了视图对象(在其他地方定义)并分配给$this->View。现在为什么这没有给我任何错误,因为我没有在控制器类的任何地方定义视图属性,也没有扩展它 错误类也是如此。为什么$this->view->msg工作正常,因为无论是在父级还是错误控制器本身的任何位置都没有定义msg属性 这些是如何工作的飞行 <?php class Controller {

下面的课程很好,我正在努力学习MVC,我只是想知道为什么。这可能很简单,但我无法理解

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

  • 错误类也是如此。为什么$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');
        }
    
    }
    
    ?>
    

    您可以随时动态地向对象添加属性,它们不需要事先声明;就像正则变量一样,如果你愿意的话。就这些


    缺点是这些属性将是公共的,您可能不希望这样,这是一种不好的做法,因为这样会使类的结构不那么明显。

    您可以随时动态地向对象添加属性,它们不需要事先声明;就像正则变量一样,如果你愿意的话。就这些


    缺点是这些属性将是
    公共的
    ,这可能是您不希望的,而且这是一种不好的做法,因为它使类的结构不那么明显。

    PHP中的对象几乎都是字典,因此您可以动态地分配新属性。但是您是对的,更好的做法是显式定义它们。PHP中的对象几乎都是字典,所以您可以动态地分配新属性。但你是对的,更好的做法是明确定义它们。