在PHP中创build超全局variables?

有没有办法创build自己的自定义超全局variables像$ _POST和$ _GET?

静态类variables可以被全局引用,例如:

class myGlobals { static $myVariable; } function a() { print myGlobals::$myVariable; } 

是的,这是可能的,但不是所谓的“核心”PHPfunction。 你必须安装一个名为runkit的扩展: http ://www.php.net/manual/en/runkit.installation.php

之后,您可以在php.ini中设置您的自定义超全局列表,如下所示: http : //www.php.net/manual/en/runkit.configuration.php#ini.runkit.superglobal

我想你已经拥有了它 – 在全局空间中创build的每个variables都可以使用$ GLOBALS suberglobal来访问,如下所示:

 // in global space $myVar = "hello"; // inside a function function foo() { echo $GLOBALS['myVar']; } 
  Class Registry { private $vars = array(); public function __set($index, $value){$this->vars[$index] = $value;} public function __get($index){return $this->vars[$index];} } $registry = new Registry; function _REGISTRY(){ global $registry; return $registry; } _REGISTRY()->sampleArray=array(1,2,'red','white'); //_REGISTRY()->someOtherClassName = new className; //_REGISTRY()->someOtherClassName->dosomething(); class sampleClass { public function sampleMethod(){ print_r(_REGISTRY()->sampleArray); echo '<br/>'; _REGISTRY()->sampleVar='value'; echo _REGISTRY()->sampleVar.'<br/>'; } } $whatever = new sampleClass; $whatever->sampleMethod(); 

解决此问题的另一种方法是使用静态类方法或variables。

例如:

 class myGlobals { public static $myVariable; } 

然后,在你的函数中,你可以简单地引用你的全局variables,像这样:

 function Test() { echo myGlobals::$myVariable; } 

不像其他一些语言那么干净,但至less你不必一直声明它是全局的。

不是真的。 尽pipe如果你不介意它的丑陋,你可以滥用那些在那里的东西。

没有

本手册中仅列出了内置的超全球variables

您也可以使用服务器的环境variables,并在PHP中访问这些variables如果您拥有并专门使用服务器,那么这可能是存储全局数据库访问的好方法。