繁体   English   中英

在PHP中处理全局变量的最有效方法是什么?

[英]What is the most efficient way of handling global variables in PHP?

似乎有些人讨厌全局变量,但如果你能解释如何在没有它们的情况下进行编码,那我就全都听见了。

否则,我有几个选择,我很好奇哪个是最好的长期。 考虑一下我有一个不会在持续时间内改变的变量。 这是一个静态的全球性。 我可以用:

$_SESSION['var'] = constantval;
define('var', constantval);
var = constantval;

而我真正好奇的是:

function my_constants($which)
{
    switch ($which) {
        case 'var':
            return 'constantval';
    }
}

在最后一个中,目标是保持变量超出全局范围,以牺牲一些处理器成本来节省内存。 节省的内存值得循环吗? 各种其他类型的全球宣言之间是否存在值得注意的差异?

由于内存使用或处理器成本,全局变量不被视为不良做法。 这是因为允许程序的任何部分修改它们的问题可能会导致。 随着时间的推移,很难理解程序的哪些部分读取或写入全局变量。

全局变量(singetons)的替代品。 它将为您提供精细的访问控制:例如:

 class ConfigParamSingelton {
     private var $value;
     private static $mInstance = null;

     public function getValue() { 
         return $this->value;
     }

     public function getInstance() {
         if(self::$mInstance == null) {
            self::$mInstance = new ConfigParamSingelton();
         }
         return self::$mInstance;
     }

所以现在你可以:

     protected function setValue($val) { // is immuteable by clients of the object
          $this->value = $val;
     }

要么

     public function setValue($val) {// is muteable
          $this->value = $val;
     }

嗯,这是单身人士。 在这种情况下,您不需要全局变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM