构造函数没有被调用

时间:2016-04-28 10:27:40

标签: php

我的一个班级有一个奇怪的问题。

班级是下一个

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,我知道它也应该按名称执行构造函数。

1 个答案:

答案 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开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数。 此更改不会影响非命名空间的类。

您可以尝试删除命名空间,但我认为这不是解决它的好方法。