2016-02-13 91 views
0

我正在寫一個記錄器的PHP類。我已經宣佈了兩個公共變數$file_log$file_log_errorPHP類給出錯誤的未定義公共變種,宣佈

class Logger 
{ 
    //constants declaration 
    const FILE_BASE = '/log/comunio-uk-log-'; 

    // property declaration 
    protected $file_log = ''; 
    protected $file_log_error = ''; 

    // Constructor 
    function __construct() { 
     $date = getdate(); 
     $file_log_name = self::FILE_BASE.$date["mday"]."-".$date["mon"]."-".$date["year"].".log"; 
     $file_log_error_name = self::FILE_BASE.$date["mday"]."-".$date["mon"]."-".$date["year"].".log.error"; 
     $this->file_log = $file_log_name; 
     $this->file_log_error = $file_log_error_name; 

     if (file_exists($this->file_log)) { 
      echo "#OK for 'file_log' var: <br><pre>", print_r($this->file_log, true), "</pre><br><br>"; 
     } else { 
      echo "#OK for 'file_log' var: <br><pre>", print_r($this->file_log, true), "</pre><br><br>";; 
     } 

     if (file_exists($this->file_log_error)) { 
      echo "#ERROR for 'file_log_error' var: <br><pre>", print_r($this->$file_log_error, true), "</pre><br><br>"; 
     } else { 
      echo "#ERROR for 'file_log_error' var: <br><pre>", print_r($this->$file_log_error, true), "</pre><br><br>"; 
     } 
    } 
} 

當我創建一個新的類對象,調用構造函數,我收到以下錯誤:

#OK for 'file_log': 
/log/comunio-uk-log-13-2-2016.log 

#ERROR for 'file_log_error': 

Notice: Undefined variable: file_log_error in C:\xampp5.6\htdocs\comuniazo-uk\api\bd\logger.php on line 28 

Fatal error: Cannot access empty property in C:\xampp5.6\htdocs\comuniazo-uk\api\bd\logger.php on line 28 

爲什麼第一個被保護VAR $file_log認識,第二個,$file_log_error,ISN是嗎?

我已經嘗試聲明公共和私人的變量。同樣的結果。

回答

2

$file_log_error從未被定義。更換

print_r($this->$file_log_error, true) 

print_r($this->file_log_error, true) 

如果你寫

$varName = 'test'; 
$obj = new stdClass; 
$obj->test = 'foo'; 
$obj->varName = 'bar'; 
echo $obj->$varName; // echo $obj->test gives 'foo', not 'bar' 
+0

我不能看到我的錯誤,太傻了!謝謝! – daniegarcia254