这让我发疯,我希望有人能提供帮助。
我正在学习 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/