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

时间:2014-12-31 19:17:29

标签: php

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

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 )打印?

1 个答案:

答案 0 :(得分:2)

  

为什么private static $instance无法使用print_r( $GLOBALS )打印?

即使静态类变量是一次且仅存在一次的变量 - 因为它与全局变量相似 - 它们不是全局可见$GLOBALS因为它们不是全局变量PHP。

您可以将它与函数内的静态变量进行比较(也许是一个更为人所知的概念):

function my_function()
{
    static $variable = 1;
}

my_function();
print_r($GLOBALS);

即使静态变量$variable只存在一次 - 与全局变量类似,但它只是在$GLOBALS中不可见。