热搜词
发表于 2021-11-2 17:11:39 | 显示全部楼层 |阅读模式
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");
    }
}


全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-12-28 12:12 , Processed in 0.191276 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team