我的一个班级有一个奇怪的问题。
班级是下一个
namespace Core;
class RequestHandler{
protected $app;
public function RequestHandler($app){
echo "EEE";
$this->app = $app;
}
}
初始化是
$requestHandler = new Core\RequestHandler($app);
我不知道为什么它没有显示任何内容,但如果我将构造函数更改为 __ construct ,一切正常。
我正在使用php 5.6.20,我知道它也应该按名称执行构造函数。
答案 0 :(得分:6)
检查示例here:
<?php
namespace Foo;
class Bar {
public function Bar() {
// treated as constructor in PHP 5.3.0-5.3.2
// treated as regular method as of PHP 5.3.3
}
}
?>
警告
旧样式构造函数在PHP 7.0中已弃用,将在以后的版本中删除。 您应该始终在新代码中使用__construct()。
因此,在 5.6.20 构造函数中,不会弃用。
从PHP 5.3.3开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数。 此更改不会影响非命名空间的类。
您可以尝试删除命名空间,但我认为这不是解决它的好方法。