2012-04-20 52 views
0

爲什麼下面的代碼不返回值?我只是空白屏幕。oops私有變量值不會返回錯誤

至少它應該返回一些錯誤,當我嘗試在子類中的私有變量val。

class Customer { 

    private $instance_count = 0; //private data member 
    function sub1(){ 
     return $this->instance_count++; 
    } 

} 
class CustomerChild extends Customer{ 
    function sub2(){ 
     return $this->instance_count++; 
    } 

} 
$CustomerObj = new CustomerChild(); 
print $CustomerObj->sub2(); 
+0

但當我使用未定義的變量時,並且當我訪問子類中的私有方法時出現錯誤。 – user1127564 2012-04-20 09:03:37

回答

1

的原因是,你要打印NULL:

var_dump($CustomerObj->sub2()); 
NULL 

print NULL; 
//nothing.... 

有關詳細信息,請@詹姆斯的回答。

0

嘗試在php.ini中啓用日誌記錄和創建你喜歡指定這樣的文件(適用於Windows):

log_errors = On 
error_log = C:\TEMP\PHP.LOG 

不要忘記創建文件夾,該文件並啓用寫入權限到該文件。

2
private $instance_count = 0; 

更改爲

protected $instance_count = 0; 

子類不能訪問私有變量。你需要保護變量。

而且,您的評論:

//static data member 

該變量不是靜態的,不知道爲什麼評論是存在的。

+0

詹姆斯:排字錯誤 – user1127564 2012-04-20 08:50:13

+0

其私人只有 – user1127564 2012-04-20 08:50:27

+0

我知道這是私人的,這是你的問題。 「子類不能訪問私有變量。」受保護的變量可以由子類訪問,但不能從外部訪問,這就是你想要的。 – James 2012-04-20 08:51:32