我正在使用几个示例练习单例模式。到目前为止我的代码:
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 )
打印?
为什么
private static $instance
不使用print_r( $GLOBALS )
打印?
尽管静态类变量是只存在一次且仅存在一次的变量 - 因为它与全局变量类似 - 它们在 $GLOBALS
中不是全局可见的,因为它们不是 PHP 中的全局变量。
您可以将其与函数中的静态变量进行比较(也许对您来说是一个更广为人知的概念):
function my_function()
{
static $variable = 1;
}
my_function();
print_r($GLOBALS);
即使静态变量$variable
存在一次且仅存在一次 - 类似于全局变量,它只是在$GLOBALS
中不可见。