php - 访问后出现 undefined variable /空属性错误

标签 php mysql oop mysqli scope

这让我发疯,我希望有人能提供帮助。

我正在学习 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 设置为 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';
   }
}
?>

这是使用“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();
 ?>

谁能解释一下这个错误?

非常感谢。

最佳答案

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

关于php - 访问后出现 undefined variable /空属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35105684/

相关文章:

php - WordPress 'If' 声明

php - 在 HTML 5 中以列表形式显示文件夹中的所有视频

php - Elasticsearch - 2019 年按嵌套字段排序

php - 在安装 PHP 时设置 MySQL 配置数据

PHP/MySQL - 不断返回 0

objective-c - 实例化一个对象的类型取决于另一个对象的类型

php - Wamp MySQL PhpMyAdmin 远程访问配置问题

php - 字符编码问题 : MySQL 5. 0 + PHP 5.2

javascript - Backbone Collections - create() 是实例方法吗?

javascript - 如何销毁在此构造函数中创建的对象?