PHP版本在升级到高版本的时候往往会出现某些函数或语法被屏弃的现象,笔者环境从PHP 5.5 升级到PHP 7.0的时候原来的站点访问的时候就出现了如下错误:
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Dir has a deprecated constructor in /home/www/wwwroot/www.jsshedu.com/encode_explorer.php on line 2106
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; File has a deprecated constructor in /home/www/wwwroot/www.jsshedu.com/encode_explorer.php on line 2148
错误原因:
从上面英文错误的字面上理解是在定义类的时候使用了与类名相同的函数名称,在PHP5里运行实际是没有报错的,但在PHP 7里就不允许这样写,自从PHP7版本开始不再支持与类名相同的构造方法
解决方法:
解决办法很简单,只要把与类名相同的函数名改为“__construct”,也就是我们熟知的构造函数咯。
实例:
以下代码中类名与函数名同为“Dir”,在PHP7中是不容许的,把下面代码中的函数 function Dir 改为 function __construct 即可。
class Dir
{
var $name;
var $location;
//
// Constructor
//
function Dir($name, $location)
{
$this->name = $name;
$this->location = $location;
}
function getName()
{
return $this->name;
}
function getNameHtml()
{
return htmlspecialchars($this->name);
}
function getNameEncoded()
{
return rawurlencode($this->name);
}
//
// Debugging output
//
function debug()
{
print("Dir name (htmlspecialchars): ".$this->getName()."\n");
print("Dir location: ".$this->location->getDir(true, false, false, 0)."\n");
}
}
|
|