2012-05-04 35 views

回答

2

你接近。或者:

self::$a = 0; //or 
A::$a = 0; 

如果它是靜態的,或者:

$this->a = 0; 

如果它不是。

+2

那不是隻能是如果'$ a'被聲明爲'static'?我不明白爲什麼'$ this-> a = 0;'在上面的代碼中不起作用,除非他靜態地調用f()'... – DaveRandom

+0

+1來修復這兩個問題! –

+0

@DaveRandom,因爲在這種情況下,$ a是一個靜態成員,而一個靜態成員不屬於該對象,$ this返回對象引用。 –

1

我相信語法是:

self::$a 
+1

僅適用於靜態成員 – adrien

1

顯然我們都被問題的標題所欺騙,儘管這裏是你如何改變$ a的值。

<?php 

class A { 
    private $a; 

    function f() { 
     //A::a = 0; //error 
     $this->a = 10; //ok 
     //$self::a = 0; //error 
    } 

    function display() { 
     echo 'a : ' . $this->a . '<br>'; 
    } 
} 

$a = new A(); 
$a->f(); 
$a->display(); 

?> 

輸出:

一個:10如果你想美元是靜態的使用以下


<?php 

class A { 
    private static $a; 

    function f() { 
     //A::$a = 0; //ok 
     //$this->a = 10; //Strict Standards warning: conflicting the $a with the static $a property 
     self::$a = 0; //ok 
    } 

    function display() { 
     echo 'a : ' . self::$a . '<br>'; 
    } 
} 

$a = new A(); 
$a->f(); 
$a->display(); 
// notice that you can't use A::$a = 10; here since $a is private 

?>