名为`start()`的方法在没有调用对象初始化的情况下执行

时间:2014-01-28 15:23:59

标签: php

我正在编写cli app,因此我创建了几个方法的主类,其中一个名为start()。简化:

class Foo{

   ...

   public function start(){
      echo "Let's start!";
      ...
   }

}

要运行我的应用,我实例化Foo类的新对象并调用start()方法:

class Foo{
   ...
}

$foo = new Foo();
$foo->start();

我注意到,即使start()类中没有__construct()方法,也会在对象构造上执行Foo。这很奇怪。

终端输出:

$ php start.php
Let's start!
Let's start!

start()代表PHP的魔术方法之一吗?我在PHP 5.5上。

1 个答案:

答案 0 :(得分:4)

在旧版PHP 4中,构造函数未命名为__construct,而是类的名称。 E.g:

class Start {

    function start() {
        // I am the constructor
    }

}

PHP 5仍然支持这种遗留行为,如果没有构造函数,则查找与该类同名的方法。

http://www.php.net/manual/en/language.oop5.decon.php