打印$GLOBALS私有静态属性未显示


printing $GLOBALS private static property not showing

我正在使用几个示例练习单例模式。到目前为止我的代码:

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中不可见。