为什么PHP允许从类外部创建类属性?

时间:2015-07-19 07:28:55

标签: php properties

来自Java背景,我发现这很奇怪。请看一下这段代码 -

<?php  
    class People {
        private $name;
        private $age;
        public function set_info($name, $age) {
            $this->name = $name;
            $this->age = $age;
        }

        public function get_info() {
            echo "Name : {$this->name}<br />";
            echo "Age : {$this->age}<br />";
        }
    }

    $p1 = new People();
    $p1->set_info("Sam",22);
    $p1->get_info();

    $p1->ID = 12057;

    echo "<pre>".print_r($p1,true)."</pre>";
?>

输出:

People Object
(
    [name:People:private] => Sam
    [age:People:private] => 22
    [ID] => 12057
) 

ID课程中未创建People的任何属性,但我可以使用ID在课堂外为p1指定一个值。

在Java中,这会产生错误 -

  

无法找到符号

这是PHP中的一项功能吗?如果它是什么叫它?它是如何有益的?

1 个答案:

答案 0 :(得分:5)

由于PHP是一种动态类型的脚本语言,因此它允许Dynamic Properties。我推荐你this article

  

JavaScript和Python等语言允许对象实例拥有   动态属性。事实证明,PHP也是如此。看着   有关您可能导致的对象和类的官方PHP文档   相信动态实例属性需要自定义__get和__set   神奇的方法。他们没有。