我正在开发一个应用程序,我需要记录进程。 所以我是来自 main.php 的登录,现在我需要从另一个类( class_TestingLog.php )
进行登录下一个代码就是我的尝试方式。你能告诉我我做错了吗?
提前谢谢。
main.php
[...]
#Logging class
include_once("./classes/class_log.php");
$Class_Log = New Class_Log();
#TestingLog Class
include_once("./classes/class_testingLog.php");
$Class_TestingLog = New Class_TestingLog();
[...]
$Class_Log->FreeLog("Test log");
$Class_TestingLog->AnyFuncion();`
[...]
class_log.php
[...]
public function FreeLog($text)
{
// echo $text . "\n"; #mistake
$this->outputText .= text; #correct one
}
[...]
class_testingLog.php
private $Class_Log = '';
[...]
public function __construct()
{
#Requires
require_once("./classes/class_log.php");
$this->Class_Log = New Class_Log();
}
public function AnyFuncion()
{
var_dump($this); #From real file
$this->Class_Log->FreeLog("Test log from another classs");
}
[...]
浏览器输出
Test log
预期的浏览器输出
Test log
Test log from another classs
=============================================== ============================
我在复制FreeLog()时犯了一个错误; 它将参数字符串值存储到私有变量中,而不是回显变量。
答案 0 :(得分:1)
require_once
__construct
内Class_TestingLog
的{{1}}语句无效且无必要。由于两个文件都在同一目录中,因此"class_log.php"
不是"./classes/class_log.php"
。无论如何都没有必要,因为当你在main.php
中包含它们时它已经被加载了。所以在没有require_once
的情况下尝试。
编辑:正如聊天中所讨论的那样:
main.php
中的:
$Class_TestingLog = New Class_TestingLog($Class_Log);
class_testingLog.php
中的:
public function __construct($ClassLog)
{
$this->Class_Log = $ClassLog;
}
这将在Class_TestingLog
类中使用与main.php
相同的实例。