首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP中用户友好的错误消息

PHP中用户友好的错误消息
EN

Stack Overflow用户
提问于 2012-11-20 04:35:29
回答 3查看 195关注 0票数 0

我有三个文本文件,其中包含三种语言的相同错误消息集:英语、法语和德语。

我需要扩展exception类,这样当出现错误时,会抛出自己的exception对象,例如“抛出新的My-Exception(" English ",4) -则会显示英文文件中的第四条消息。

这是我到目前为止所做的:

代码语言:javascript
运行
复制
<?php  

class My_Exception extends Exception {  

     function __construct($lang, $errcode) {  
        $this->lang = $lang;  
        $this->errcode = $errcode;  
     }  

   function getMessageMap() {  
        $errors = file('errfiles/'.$this->lang.'.txt'); 

        foreach($errors as $error) {  
            list($key,$value) = implode(',', $errors); 
            $errorArray[$key] = $value; 
        }  
        return $errorArray[$this->errcode];  
    }  

}  

try {  throw new My_Exception('english', 3);  }  
catch (My_Exception $e) { echo $e->getMessageMap();  }  

?> 

这不能正常工作。如果有任何帮助,我将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2012-11-20 04:38:21

我不会为每种语言抛出特定的异常消息,而是坚持使用一个正常的异常。然后,当您在应用程序中捕获这些错误时,您可以显示特定语言的错误页面。换句话说,不要为了最终的字体结束问题而彻底改变您的应用程序体系结构(即使是以这种次要的方式)。

票数 1
EN

Stack Overflow用户

发布于 2012-11-20 05:28:48

我想你把implode()explode()搞混了。假设您的errors.txt文件如下所示:

代码语言:javascript
运行
复制
1,I am error one
2,I am error two

因此,您希望每个$errors as $error explode(',', '1,I am error one');为:

代码语言:javascript
运行
复制
array("1", "I am error 1")

是的,"1"是一个字符串,直到您专门使用(int)$errnointval($errno)将其转换为int

PHP是“松散类型的”,通常在后台执行,所以你不必担心它,但你应该担心它。否则,您会偶尔遇到代码执行非常奇怪的事情的情况。

票数 0
EN

Stack Overflow用户

发布于 2012-11-20 05:30:50

您提到的错误消息如下所示:

文件(errfiles/english.txt):无法打开流

所以尝试使用错误文件的完整路径...

代码语言:javascript
运行
复制
$errors = file('C:/xampp/htdocs/HW4/errfiles/'.$this->lang.'.txt'); 

另外,你能确认这个文件确实是以大写"E“开头的吗?

第二个错误:

在第13行的C:\xampp\htdocs\HW4\index.php中为

()提供的foreach参数无效

是因为第一个问题。解决这个问题,一切都会好起来的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13461749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档