簡體   English   中英

PHP-從另一個類調用類函數

[英]PHP - Call class function from another class

我正在開發一個需要記錄過程的應用程序。 所以我是從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()時出錯; 它將參數字符串值存儲到私有變量中,而不是回顯該變量。

您在__constructClass_TestingLog內的require_once語句無效且不必要。 由於兩個文件都位於同一目錄中,因此應為"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;
}

這將使用與main.php相同的Class_TestingLog類內部的實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM