Php 访问后出现未定义变量/空属性错误

Php 访问后出现未定义变量/空属性错误,php,mysql,oop,mysqli,scope,Php,Mysql,Oop,Mysqli,Scope,这让我抓狂,我希望有人能帮我 我正在学习PHP,作为一个更大项目的一部分,为了帮助我在出现问题时调试/记录问题,我创建了一个PHP错误日志类 这是我的错误: 这是一个测试 我希望它能起作用 成功 注意:未定义的变量:第27行的errorLog in/Applications/MAMP/htdocs/errorLog.php 致命错误:无法访问第27行的/Applications/MAMP/htdocs/errorlog.php中的空属性 所以我可以看到 第27行的错误包括: $outputStr

这让我抓狂,我希望有人能帮我

我正在学习PHP,作为一个更大项目的一部分,为了帮助我在出现问题时调试/记录问题,我创建了一个PHP错误日志类

这是我的错误:

这是一个测试

我希望它能起作用

成功

注意:未定义的变量:第27行的errorLog in/Applications/MAMP/htdocs/errorLog.php

致命错误:无法访问第27行的/Applications/MAMP/htdocs/errorlog.php中的空属性

所以我可以看到

第27行的错误包括:

$outputStringForSQL = $conn->escape_string($this->$errorLog);
我被难住了。我不明白
$errorLog
是如何定义的,因为它已经用
append()
方法添加了两次,并使用
returnLog()
方法读取。属性
$errorLog
显然不是空的,因为
returnLog()
可以很好地从中读取。我通过回显检查了
$this->errorLog
是否为空

我想我可能误解了scope,所以将$erroLog设置为public,但仍然没有

下面是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';
   }
}
?>

$this->$errorLog
替换为
$this->errorLog

$this->$errorLog
替换为
$this->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();
 ?>