代码之家  ›  专栏  ›  技术社区  ›  JasonDavis

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

php
  •  1
  • JasonDavis  · 技术社区  · 15 年前

    将10+php类轻松设置为调试模式,但仍保持这些类不依赖于其他东西的最佳方法是什么?

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

    4 回复  |  直到 15 年前
        1
  •  4
  •   zneak    15 年前

    这个问题有点矛盾吗?如果你有10个以上的班级,你想让他们 依赖 在其他东西一起处于“调试”状态时,您不能真正地保持它们完全独立。关键是你必须依赖某件事;我认为你最好的选择是选择缠绕最少的解决方案。

    我可以想到两种方法:使用 define 以及使用环境变量。

    我会用 定义 :

    define('DEBUG', true);
    

    在我的每个类文件中,在声明类之前,我将检查常量是否存在:

    if(!defined('DEBUG')) define('DEBUG', $my_default_debug_value);
    

    所以它们仍然可以以独立的方式工作,但是你仍然依赖于一个常量。


    另一种可能是依赖环境变量,但在 safe_mode 如果您无法控制允许哪些环境变量。我个人不会使用它,因为我不喜欢它们,但也许这正是你想要的。

    putenv('MYPROJECTNAME_DEBUG=1');
    

    然后 getenv 可用于检索“myprojectname_debug”环境变量;如果找不到,则为false。

    getenv('MYPROJECTNAME_DEBUG');
    
        2
  •  2
  •   Tyler Carter    15 年前

    你可以这样做:

    define("DEBUG", TRUE);
    

    然后

    if(defined("DEBUG"))
    {
        // .... debug code
    }
    

    这会将整个脚本设置为调试模式

    您可以改用类常量。(或命名空间常量,如果将其转换为该常量)

    class MyClass{
        const Debug = true;
    
        public function do()
        {
              if(self::Debug == true)
              {
                   // .. debug stuff
              }
        }
    }
    

    然后根据状态更改常量。

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

        3
  •  0
  •   rATRIJS    15 年前

    我用常数 伊斯生产 什么时候设置为 ,表示我怀疑要显示的所有警告,并输出有关失败的其他信息…此常量包含在每个页面中。

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

        4
  •  0
  •   VolkerK    15 年前

    根据您所说的调试模式,您可能会感兴趣 Assertions .