2016-01-30 2 views
1

Это сводит меня с ума, и я надеюсь, что кто-то может помочь.Неопределенная ошибка переменной/пустой ошибки после доступа

Я изучаю PHP и как часть более крупного проекта, чтобы помочь мне отлаживать/регистрировать проблемы, поскольку они происходят. Я создал класс регистрации ошибок PHP.

Это моя ошибка:

This is a test

I hope it worked!

Success!

Notice: Undefined variable: errorLog in /Applications/MAMP/htdocs/errorlog.php on line 27

Fatal error: Cannot access empty property in /Applications/MAMP/htdocs/errorlog.php on line 27

Так что я могу видеть

Ошибка в строке 27 состоит из:

$outputStringForSQL = $conn->escape_string($this->$errorLog); 

Я озадачен. Я не понимаю, как $errorLog не определено, поскольку оно явно добавлено дважды с помощью метода append() и считывается с использованием метода returnLog(). Свойство $errorLog явно не пусто, так как returnLog() читает от него штраф. Я проверил, что $this->errorLog не пуст, повторив его.

Я подумал, что, возможно, я неправильно понял объем, который задал $ erroLog публике, все равно ничего.

Здесь errorlog.php класс 'ErrorLog':

<?php 
class errorlog{ 

protected $errorLog; 

public function append($string){ 
    $this->errorLog = $this->errorLog . $string . "<br />"; 
} 

public function returnLog() { 
    echo $this->errorLog; 
    return "Success!"; 
} 

public function commit(){ 
    global $_mysqlUsername; 
    global $_mysqlPassword; 

    $servername = "localhost"; 
    $dbname = "my_DB"; //production 

    // Create connection 
    $conn = new mysqli($servername, 'root', 'root', $dbname); 
    // Check connection 
    if ($conn->connect_error) { 
     die(error_log($conn->connect_error)); 
    } 
    $outputStringForSQL = $conn->escape_string($this->$errorLog); 
    $sql = "INSERT INTO `tblDebugLog` (`ID`, `dateTime`, `debugData`) VALUES (NULL, CURRENT_TIMESTAMP, '$outputStringForSQL');"; 
    if ($conn->query($sql) !== TRUE) { 
    echo("Error: " . $sql . "<br>" . $conn->error); 
    } 
    $conn->close(); 
    return 'Success'; 
    } 
} 
?> 

Это сценарий использования класса 'ERRORLOG':

<?php 
    function __autoload($class){ 
     require "$class.php"; 
    } 

    $myError = new errorlog; 
    $myError->append('This is a test'); 
    $myError->append('I hope it worked!'); 
    echo $myError->returnLog(); 
    echo $myError->commit(); 
?> 

Может кто-нибудь пролить некоторый свет на эту ошибку ?

Большое спасибо.

ответ

4

Заменить $this->$errorLog на $this->errorLog

+0

Я знал, что я делаю что-то глупое! Спасибо!!!!!! – Craig

Смежные вопросы