在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中使用
致命错误是什么意思,我该如何解决?
答案 0 :(得分:1)
只需添加到
@Powerlord绝佳答案
我还将重命名此功能/方法
function Error
在PHP4中,构造函数的名称与类相同。这在重构代码,复制类等方面有一些限制。您必须记住要重命名它们。
代码中不清楚这是否最初打算用作__construct
方法。该类的内部属性都没有被修改(外部)到此方法,因此每个实例有可能被多次调用。但是,如果它是“构造函数”,则一定要称其为__construct()
PS。您可能想要“命名空间”或重命名该类,如@Powerlord的答案所指出。
而且我会避免使用__method
类型名称,因为这对我来说很丑...大声笑
由于这些错误,我用PHP咬牙了……大声笑。我专业的第一份工作是将网站从4.x
迁移到5.3
-大约在2008年(感谢您对PHP4的回忆)
答案 1 :(得分:1)
由于PHP7拥有自己的Error
类,所以您遇到错误,因此无法命名自己的类Error
。