我正在使用几个例子练习单身模式。到目前为止我的代码:
class LimitedEditionBuggati {
private $props = array(
'speed' => 256,
'cylinders' => 18,
'color' => 'metalic silver',
'hp' => 1200,
'price' => 5000000,
'vin' => 'the one'
);
private static $instance;
private function __construct(){}
public static function instance() {
if( empty($instance) ) {
return new LimitedEditionBuggati();
}
return self::$instance;
}
public function getProperty( $property ) {
return $this->props[$property];
}
}
$myCar = LimitedEditionBuggati::instance();
为什么private static $instance
无法使用print_r( $GLOBALS )
打印?
答案 0 :(得分:2)
为什么
private static $instance
无法使用print_r( $GLOBALS )
打印?
即使静态类变量是一次且仅存在一次的变量 - 因为它与全局变量相似 - 它们不是全局可见到$GLOBALS
因为它们不是全局变量PHP。
您可以将它与函数内的静态变量进行比较(也许是一个更为人所知的概念):
function my_function()
{
static $variable = 1;
}
my_function();
print_r($GLOBALS);
即使静态变量$variable
只存在一次 - 与全局变量类似,但它只是在$GLOBALS
中不可见。