-2

在 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 的未来版本中将不再是构造函数;错误在第 12 行的 /usr/local/IBSng/interface/IBSng/inc/errors.php 中有一个已弃用的构造函数

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

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

4

2 回答 2

1

只是为了添加

@Powerlord 很好的答案

我也会重命名这个函数/方法

function Error

在 PHP4 中,构造函数的名称与类相同。这对重构代码、复制类等有一些限制。因为你必须记住重命名它们。

代码中不清楚这是否最初打算成为该__construct方法。类的所有内部属性都没有被修改(外部)为此方法,因此每个实例可能会多次调用它。但如果它是“构造函数”,那么无论如何都称它为__construct()

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

而且我会避免使用__method类型名称,因为它对我来说很难看……哈哈

我在 PHP 中因这些错误而咬牙切齿……哈哈。我的第一份专业工作是将一个站点从一个迁移到另一个4.x——5.3大约在 2008 年(感谢 PHP4 的记忆)

于 2019-02-13T23:56:55.523 回答
1

你得到一个错误,因为 PHP7 有它自己的Error类,所以你不能命名你自己的类Error

于 2019-02-13T23:57:55.887 回答