如何将多个PHP类设置为调试模式?

如何将多个PHP类设置为调试模式?,php,Php,将10+PHP类轻松设置为调试模式,但仍然保持类不依赖于其他内容的最佳方法是什么 如果我设置了一个全局常量,然后在每个类中检查它的值,那么每个类都依赖于这个常量的设置。这意味着,如果我试图在另一个项目中使用该类,它将依赖于另一个文件中的常量。我使用一个常量is_PRODUCTION,当设置为false时,这意味着我怀疑所有要显示的警告,并输出有关故障的附加信息…此常量包含在每一页上 另外,我希望我正确理解了您的问题…我使用一个常数IS_PRODUCTION,当该常数设置为false时,意味着我怀

将10+PHP类轻松设置为调试模式,但仍然保持类不依赖于其他内容的最佳方法是什么

如果我设置了一个全局常量,然后在每个类中检查它的值,那么每个类都依赖于这个常量的设置。这意味着,如果我试图在另一个项目中使用该类,它将依赖于另一个文件中的常量。

我使用一个常量is_PRODUCTION,当设置为false时,这意味着我怀疑所有要显示的警告,并输出有关故障的附加信息…此常量包含在每一页上

另外,我希望我正确理解了您的问题…

我使用一个常数IS_PRODUCTION,当该常数设置为false时,意味着我怀疑所有要显示的警告,并输出有关故障的附加信息…该常数包含在每页中


另外,我希望我正确地理解了你的问题…

你可以这样做:

define("DEBUG", TRUE);
然后

if(defined("DEBUG"))
{
    // .... debug code
}
这会将整个脚本设置为调试模式

您可以改用类常量。(或名称空间常量,如果您的

然后根据状态更改常量


当使用名称空间时,这实际上非常强大,因为我将所有特定于“系统”的文件(记录器、数据库连接等)保存在自己的名称空间中。如果我让所有这些类检查特定于命名空间的调试常量,我可以让我正在处理的代码(非系统代码)处于调试模式。

您可以执行以下操作:

define("DEBUG", TRUE);
然后

if(defined("DEBUG"))
{
    // .... debug code
}
这会将整个脚本设置为调试模式

您可以改用类常量。(或名称空间常量,如果您的

然后根据状态更改常量


当使用名称空间时,这实际上非常强大,因为我将所有特定于“系统”的文件(记录器、数据库连接等)保存在自己的名称空间中。如果我让所有这些类检查特定于命名空间的调试常量,我就可以只使用我正在处理的代码(而不是系统代码)处于调试模式。

取决于您可能感兴趣的调试模式。

取决于您可能感兴趣的调试模式。

这个问题不是有点矛盾吗?如果你有10多个类,你想让它们一起依赖于其他东西,处于“调试”状态,那么你就不能让它们完全独立。关键是你必须依赖于某件事;我认为你最好的办法是选择最不纠结的解决方案

我可以想到两种方法:使用
定义
和使用环境变量

我会使用
定义

define('DEBUG', true);
在我的每个类文件中,在声明类之前,我会检查常量是否存在:

if(!defined('DEBUG')) define('DEBUG', $my_default_debug_value);
所以它们仍然可以以独立的方式工作,但您仍然依赖于一个常量


另一种可能是依赖环境变量,但如果您无法掌握允许哪些环境变量,则在
安全模式下可能会失败。我个人不会用它,因为我不喜欢它们,但也许这正是你想要的

putenv('MYPROJECTNAME_DEBUG=1');
然后可用于检索“MYPROJECTNAME\u DEBUG”环境变量;如果找不到,那就是假的

getenv('MYPROJECTNAME_DEBUG');

这个问题不是有点矛盾吗?如果你有10多个类,你想让它们一起依赖于其他东西,处于“调试”状态,那么你就不能让它们完全独立。关键是你必须依赖于某件事;我认为你最好的办法是选择最不纠结的解决方案

我可以想到两种方法:使用
定义
和使用环境变量

我会使用
定义

define('DEBUG', true);
在我的每个类文件中,在声明类之前,我会检查常量是否存在:

if(!defined('DEBUG')) define('DEBUG', $my_default_debug_value);
所以它们仍然可以以独立的方式工作,但您仍然依赖于一个常量


另一种可能是依赖环境变量,但如果您无法掌握允许哪些环境变量,则在
安全模式下可能会失败。我个人不会用它,因为我不喜欢它们,但也许这正是你想要的

putenv('MYPROJECTNAME_DEBUG=1');
然后可用于检索“MYPROJECTNAME\u DEBUG”环境变量;如果找不到,那就是假的

getenv('MYPROJECTNAME_DEBUG');

在您发布的类示例中,是否必须在每个类中设置它?或者可以全局设置为打开/关闭所有类调试?在您发布的类示例中,是否必须在每个类中设置它?或者可以全局设置为打开/关闭所有类调试?@zneak-1这个问题非常直截了当,我认为在不知道他的调试模式“在做什么”的情况下可以回答它。杰克:有点激进,是吗?如果我选择不发布答案,因为我觉得我知道的还不够多,这其实不是你的问题。@zneak-1这个问题非常直截了当,我认为在不知道他的调试模式“在做什么”的情况下可以回答它。@Jack:有点咄咄逼人,是吗?如果我选择不发布答案,因为我觉得我知道的不够多,这其实不是你的问题。感谢getenv是我不知道的东西,我必须检查它,你的其他想法也可能是关键。感谢getenv是我不知道的东西,我必须检查它,你的其他想法也可能是关键