首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全局变量,SuperGlobals -如何使变量的值对所有函数都可访问?

全局变量,SuperGlobals -如何使变量的值对所有函数都可访问?
EN

Stack Overflow用户
提问于 2013-06-04 14:16:24
回答 3查看 551关注 0票数 1

我有一个我正在编写的PHP程序,大约有200行代码。它有很多我写的函数,可能有十几个。我希望在程序中有一个调试选项,但希望该值也可以在所有函数中访问。这应该如何定义,应该在哪里定义?

代码语言:javascript
复制
Global $debug_status;

function blah ($message) {
if ($debug_status == "1" ) {
  do something...}
...
}

这是正确的方法吗?谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-04 14:27:34

使用常量。

代码语言:javascript
复制
define('DEBUG', true);

..。

代码语言:javascript
复制
if (DEBUG) ...

当然,还有更好的调试方法。例如,使用OOP,在每个对象中注入一个记录器实例,调用

代码语言:javascript
复制
$this->logger->debug(...);

若要记录消息,请切换记录器的输出筛选器以显示或隐藏调试消息。

票数 3
EN

Stack Overflow用户

发布于 2013-06-04 14:20:32

你就快到了..。global关键字将对全局的引用导入到当前作用域中。

代码语言:javascript
复制
$debug_status = "ERROR";

function blah ($message) {
    global $debug_status;
    if ($debug_status == "1" ) {
      do something...}
      ...
    }
票数 1
EN

Stack Overflow用户

发布于 2013-06-04 14:26:15

该变量应该在Registry类中定义,这是一种模式。

Working demo

注册表的示例

代码语言:javascript
复制
class Registry {
   private static $registry = array();

   private function __construct() {} //the object can be created only within a class.
   public static function set($key, $value) { // method to set variables/objects to registry
      self::$registry[$key] = $value;
   }

   public static function get($key) { //method to get variable if it exists from registry
      return isset(self::$registry[$key]) ? self::$registry[$key] : null;
   }
}

使用

要注册对象,您需要包含此类

代码语言:javascript
复制
$registry::set('debug_status', $debug_status); //this line sets object in **registry**

要获取对象,可以使用 get 方法

代码语言:javascript
复制
$debug_status = $registry::get('debug_status'); //this line gets the object from **registry**

这是每个对象/变量都可以存储在其中的解决方案。为了达到您所写的目的,最好使用简单常量和define()

我的解决方案适用于应该从应用程序中的任何位置访问的每一种对象。

编辑

删除了singleton和make get,按照@deceze的建议将方法设置为静态方法。

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

https://stackoverflow.com/questions/16911004

复制
相关文章

相似问题

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