FreeABC
记忆重叠

PHP7 类与类方法重名

由于公司采用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作为构造方法的方法名。即:

 

<?php 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时候,返回的结果也是没有错误的;

 

待高手指点了……

未经允许不得转载:Free-Abc智能 » PHP7 类与类方法重名
分享到: 更多 (0)