gpt4 book ai didi

php - 在 php 中系统化 web 应用程序的错误代码?

转载 作者:可可西里 更新时间:2023-11-01 13:17:02 24 4
gpt4 key购买 nike

我正在开发一个基于类的 php 网络应用程序。我在某些地方进行对象交互,并且在某些情况下我使用错误代码与最终用户进行通信——通常是在表单值丢失或无效时。这些情况下异常(exception)是没有根据的(而且我不确定我是否可以避免出现异常(exception)情况)。

在一个对象中,我有大约 20 个代码编号,每个代码编号对应一条面向用户的消息和一条面向管理员/开发人员的消息,因此双方都知道发生了什么。现在我已经多次检查代码,我发现很难快速找出我已经使用过的系列中的哪些代码编号,所以我不小心创建了冲突的代码编号。例如,我今天刚用 12、13、14 和 15 做到了这一点。

我怎样才能更好地组织它,以免创建冲突的错误代码?我是否应该创建一个单例类 errorCodes,它具有所有类的所有错误代码的主列表,并在整个 Web 应用程序中将它们系统化?或者每个对象都应该有自己的一组错误代码,在适当的时候,我只在对象的注释中保留一个列表,以便在我进行时使用和更新它?


编辑:所以我喜欢在类中使用常量或命名常量的建议。这给了我一个地方,我可以在其中以编程方式定义和跟踪错误代码及其消息。

下一个问题:这个类的错误码和信息,我对外提供什么样的接口(interface)?我是否在类中执行类似 triggerError(20) 的操作,然后提供一个公共(public)方法来返回错误代码、字符串常量以及面向用户和管理员的消息?

最佳答案

您可以创建两个 defines为所有错误代码创建命名常量:

define('ERROR_CODE_SQL_QUERY', 1);
define('ERROR_CODE_PAGE_NOT_FOUND', 2);
define('ERROR_CODE_NOT_ALLOWED', 3);
// and so on

然后,在您的代码中使用常量:

if ($errorCode == ERROR_CODE_SQL_QUERY) {
// deal with SQL errors
}


这样一来,您将在代码中的任何地方都不会使用数值:到处(除了在唯一的放置define 的文件中),您将使用代码。

意思是:

  • 更少的错误风险,因为所有数值都只设置在一个文件中
  • 更少的错误风险,因为您将使用常量,这些常量有一个表明其含义的名称
  • 以及更易于阅读的代码。


另一个想法可能是创建一个类来处理错误:

class Error {
const CODE_SQL_QUERY = 1;
const CODE_PAGE_NOT_FOUND = 2;
const CODE_NOT_ALLOWED = 3;

// Add some methods here, if needed
}

然后,使用这样的东西:

if ($errorCode == Error::CODE_SQL_QUERY) {
// deal with SQL errors
}


哪个是最好的

这可能是个人喜好问题...如果您需要添加一些方法来处理错误,使用类可能会有用。否则,定义也是一个很好的解决方案。

关于php - 在 php 中系统化 web 应用程序的错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2510199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com