2013-07-05 54 views
0

在我看來,即使在最嚴格的錯誤報告中,PHP類成員也不比變量嚴格。 例如PHP:未初始化的類成員/屬性上的錯誤

class A 
{ 
    public function __construct() 
    { 
     $this->test = 0; 
    } 
} 

$a = new A(); 

在任何情況下都不會給出錯誤。我想手動定義$ test(作爲public/protected/private)。當然,我可以定義__get($ field)和__set($ field),但我正在尋找全球解決方案。

+0

這不是一個錯誤,它是一個功能。請仔細閱讀[this](http://www.ibm.com/developerworks/library/os-php-flexobj/)。 –

+0

您可以模擬具有__get和__set方法的活動記錄模式,並對內部數組進行操作,這就是您鏈接的文章中發生的情況。我想我的建議是,由於缺乏獲取和設置魔術方法,它會按照錯誤而不是自動初始化(如調用)。我的建議和該文章之間沒有矛盾,儘管它可能會破壞很多代碼。 – apartridge

回答

-1
<?php 
class A 
{ 
    private $test; 

    public function __construct($test = 0) // set a default value to 0 if no parameters 

    { 

     $this->test = $test; 



    } 

    public function __set($field ) 

    { 
     if(isset($field) === true) 

     { 
      $this->test = $field; 
      return true; 
     } 

     return false; 

    } 
    public function __get() 

    { 

     return $this->test; 

    } 

} 
$a = new A(); 

echo $a->get(); 
?> 
+0

嗯,我注意到我沒有在尋找__get/__設置破解。 – apartridge

相關問題