PHP命名空间和构造函数问题

RB1*_*987 2 php constructor namespaces

我正在尝试以下方法:

//file1.
namespace foo;
class mine {
     public function mine() {
         echo "Does not work!!";
     } 
}
//file2. 

use foo/mine;
include "foo/mine.php";
$obj = new mine();
Run Code Online (Sandbox Code Playgroud)

以上情况无效.包括文件构造函数在内的任何错误都不会被调用.

但是当我使用__constructor()时,一切正常.我使用的是php v5.4

Man*_*ian 6

来自php手册:

为了向后兼容,如果PHP 5找不到给定类的__construct()函数,并且该类没有从父类继承,则它将按类的名称搜索旧式构造函数.实际上,这意味着唯一具有兼容性问题的情况是该类是否有一个名为__construct()的方法,该方法用于不同的语义.

从PHP 5.3.3开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数.此更改不会影响非命名空间的类.

您可以使用类的名称作为构造函数(除非该类是命名空间),因为PHP5保留了它以便与PHP4向后兼容,但是这不是推荐的,因为它是旧的方式,可能会在较新版本的php中删除.因此,除非您正在编写需要PHP4兼容使用的某些东西__construct().