php中构造函数的意外行为

时间:2014-05-12 19:00:28

标签: php oop constructor

我是php的新手,正在学习它的oop概念 在整个过程中,我看到了这个我无法解释的内容 构造函数如何访问甚至不属于类的属性?

  <?php
    class Person {
      public $isAlive = true;

      function __construct($name) {
          $this->name = $name;
      }

      public function dance() {
        return $this->name;
      }

    }

    $me = new Person("Shane");
    if (is_a($me, "Person")) {
      echo "I'm a person, ";
    }
    if (property_exists($me, "name")) {
      echo "I have a name, ";
    }
    if (method_exists($me, "dance")) {
      echo "and I know how to dance!";
    }

  ?>

上面的输出是我是一个人,我有一个名字,我知道如何跳舞!
如果&#39; name&#39;是怎么回事?是不是被声明为Person类的属性?

2 个答案:

答案 0 :(得分:0)

与Java不同,您可以动态设置变量而无需先声明它们。

所以$this->name基本上会将公共$name变量作为类变量。

答案 1 :(得分:0)

可以随时创建PHP类变量,因此它与其他OO语言(如Java和C#)不同。然而,在类声明中声明变量总是一个好主意,因此程序员以后更容易找到并理解。 例如$name = NULL;