PHP - 从另一个类调用类函数

时间:2017-10-18 08:55:49

标签: php

我正在开发一个应用程序,我需要记录进程。 所以我是来自 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()时犯了一个错误; 它将参数字符串值存储到私有变量中,而不是回显变量。

1 个答案:

答案 0 :(得分:1)

require_once __constructClass_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相同的实例。