我的一个班级有一个奇怪的问题.
这个班是下一个
namespace Core;
class RequestHandler{
protected $app;
public function RequestHandler($app){
echo "EEE";
$this->app = $app;
}
}
Run Code Online (Sandbox Code Playgroud)
初始化是
$requestHandler = new Core\RequestHandler($app);
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它没有显示任何东西,但如果我将构造函数更改为__construct,一切正常.
我正在使用php 5.6.20,我知道它也应该按名称执行构造函数.
检查例子在这里:
<?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
}
}
?>
Run Code Online (Sandbox Code Playgroud)
警告
旧样式构造函数在PHP 7.0中已弃用,将在以后的版本中删除.您应该始终在新代码中使用__construct().
所以在5.6.20中,不推荐使用名称构造函数.
从PHP 5.3.3开始,与命名空间类名的最后一个元素同名的方法将不再被视为构造函数.此更改不会影响非命名空间的类.
您可以尝试删除命名空间,但我认为这不是解决它的好方法.
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |