不推荐使用-与类同名的方法在将来的PHP版本中将不再是构造函数

时间:2019-02-13 23:53:07

标签: php class centos7.6

在php v 5中,这些php代码没有问题:

<?php

$ERRORS=array("INVALID_ERROR"=>"Invalid/Unknown error",
              "ACCESS_DENIED"=>"Access Denied",
              "INVALID_INPUT"=>"Invalid Input",
              "INCOMPLETE_REQUEST"=>"INCOMPLETE REQUEST"
            );

class Error
{ /* This Class is for errors reported from core or interface.
     Normally errors should consist of lines of ( keys and  messages), formated in a string like "key|msg"
     key shows what is error about and msg is the error message for this situation

  */
    function Error($err_str)
    {
        $this->raw_err_str=$err_str;
        $this->err_msgs=array();
        $this->err_keys=array();
        $this->__splitErrorLines();

    }

    function __splitErrorLines()
    {
        $err_lines=split("\n",$this->raw_err_str);
        foreach($err_lines as $line)
            $this->__splitError($line);
    }

    function __splitError($err_str)
    {
        $err_sp=split("\|",$err_str,2);
        if(sizeof($err_sp)==2)
        {
            $this->err_msgs[]=$err_sp[1];
            $this->err_keys[]=$err_sp[0];
        }    
        else
        {
            $this->err_msgs[]=$err_str;
            $this->err_keys[]="";
        }
    }

    function getErrorKeys()
    {/*
        Return an array of error keys
     */

        return $this->err_keys;
    }

    function getErrorMsgs()
    {/*
        Return array of error msgs
        useful for set_page_error method of smarty
     */
        return $this->err_msgs;
    }

    function getErrorMsg()
    {/* 
        Return an string of all error messages concatanated
     */
        $msgs="";
        foreach ($this->err_msgs as $msg)
            $msgs.=$msg;
        return $msgs;
    }

}

function error($error_key)
{/* return complete error message of $error_key */
    global $ERRORS;
    if (isset($ERRORS[$error_key]))
        return new Error($error_key."|".$ERRORS[$error_key]);
    else
        return new Error($ERRORS["INVALID_ERROR"]);
}

?>

但是在安装php v7.3.2之后我得到了这个错误:

  

已弃用:与类同名的方法将不被使用   未来版本的PHP中的构造函数;错误已弃用   /usr/local/IBSng/interface/IBSng/inc/errors.php中的构造函数   12

     

致命错误:无法声明类错误,因为名称已经   在第12行的/usr/local/IBSng/interface/IBSng/inc/errors.php中使用

致命错误是什么意思,我该如何解决?

2 个答案:

答案 0 :(得分:1)

只需添加到

@Powerlord绝佳答案

我还将重命名此功能/方法

function Error

在PHP4中,构造函数的名称与类相同。这在重构代码,复制类等方面有一些限制。您必须记住要重命名它们。

代码中不清楚这是否最初打算用作__construct方法。该类的内部属性都没有被修改(外部)到此方法,因此每个实例有可能被多次调用。但是,如果它是“构造函数”,则一定要称其为__construct()

PS。您可能想要“命名空间”或重命名该类,如@Powerlord的答案所指出。

而且我会避免使用__method类型名称,因为这对我来说很丑...大声笑

由于这些错误,我用PHP咬牙了……大声笑。我专业的第一份工作是将网站从4.x迁移到5.3-大约在2008年(感谢您对PHP4的回忆)

答案 1 :(得分:1)

由于PHP7拥有自己的Error类,所以您遇到错误,因此无法命名自己的类Error