2013-03-19 95 views
2

爲什麼這有效?我的意思是,訪問私有變量。在PHP中使用靜態方法訪問私有文件

 
class Test { 
    private $q = 0; 
    public function __construct() { 
     $this->q = 1; 
    } 
    public static function EpicConstruct() { 
     $test = new self(); 
     $test->q = 2; 
     return $test; 
    } 
} 

$test = Test::EpicConstruct(); 
+3

因爲您是從同一個班級訪問它的。 – Maerlyn 2013-03-19 21:07:22

+1

http://www.php.net/manual/en/language.oop5.visibility.php – 2013-03-19 21:08:02

+0

想想它就像男人和女人的更衣室。同一班級的對象可以看到對方的私處。 – 2013-03-19 21:55:13

回答

3

因爲您正在以正確的上下文訪問成員,即:定義私有成員的類。

+0

所以我可以用這種方式處理這個類的任何對象?我想我明白裝飾者模式現在如何運作。謝謝! – UnstableFractal 2013-03-19 21:11:24

+0

@smsteel只要是同一個班級:是的。使用裝飾器模式,不是那麼多:作爲裝飾器是擴展類的一個類,或者更典型地擴展/實現一個公共的超類型(一些基類或接口)。前一種修飾器只能訪問至少受到「保護」的成員,而後者只能訪問該類的「公共」成員(或超類型的「受保護」成員)。 – 2013-03-19 21:16:05