嗨,我正在用PHP写一些代码.我需要使用类内部全局作用域中的变量,但是它不起作用.我不知道是否需要使用名称空间,如何使用?谢谢
样品:
$plantask_global_script = array("one", "two");
$plantask_global_config = array("three", "four");
$myvar = array_merge($plantask_global_script, $plantask_global_config);
class Env implements ArrayAccess
{
static private $container = $myvar;
public function offsetSet($offset, $value)
{
if (is_null($offset)) {
self::$container[] = $value;
} else {
self::$container[$offset] = $value;
}
}
public function offsetExists($offset)
{
return isset(self::$container[$offset]);
}
public function offsetUnset($offset)
{
unset(self::$container[$offset]);
}
public function offsetGet($offset)
{
return isset(self::$container[$offset]) ? self::$container[$offset] : null;
}
}
解决方法:
尝试将$myvar称为超全局变量:
private static $container = $GLOBALS['myvar'];
尽管正如Ron Dadon指出的那样,这在OOP中通常是不好的做法.
编辑:
我在这里跳了枪.我上面的解决方案实际上不起作用,至少对我来说不行.因此,实现此目标的更好方法如下:
$myvar = array_merge($plantask_global_script, $plantask_global_config);
class Env implements ArrayAccess
{
private static $container = null;
public static function init($var)
{
self::$container = $var;
}
...
}
Env::init($myvar);
标签:scope,php,class
来源: https://codeday.me/bug/20191120/2042367.html