由于公司采用PHP7环境 TP5版本
今天与同事沟通时提到,php7 里面 类与类方法重名 会报错,
于是有了以下验证之路;
度娘来一下,找到一篇简书的文章提到;
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP;
a has a deprecated constructor in Pathxxx.php on line 9.
PHP OOP使用和类名相同的方法名作为构造方法,是PHP4的写法,
PHP 5中同时支持construct和类同名方法,但construct方法具有优先性。
PHP 7开始使用和类名相同的方法名作为构造方法会报E_DEPRECATED级别的错误,
提示在未来版本中会彻底抛弃类同名方法作为构造函数。但程序仍然会正常执行。
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP的解决方法是使用__construct作为构造方法的方法名。即:
class a { //function a(){ // //} function __construct() { } }
似乎跟同事的观点一样,来咪踹!
1、修改php.ini文件让其显示所有错误信息
display_errors = On
2、使用以下脚本进行测试;
<?php
echo date(‘Y-m-d H:i:s’,time()).”n”;
echo “PHP版本:”.phpversion().”n”;
class A {
public function A(){
echo “asdasd”;
}
// function __construct() {
// }
}
$s=new A();
$s->A();
echo “rn”;
?>
执行结果为
[root@localhost tmp]# php test.class.php
2017-04-01 11:44:33
PHP版本:7.1.3
asdasdasdasd
并没有看到所谓的错误,我现在使用的是php当前的最新版本7.1.3;
前面使用7.1.1时候,返回的结果也是没有错误的;
待高手指点了……