簡體   English   中英

從調用者訪問對象屬性

[英]Accessing object property from caller

我有一個基本上包含類庫的文件。 我正在使用文件中包含的單獨的logEngine類記錄這些類的錯誤。 我想從調用這些類的類中提取一個屬性,並將其與記錄的錯誤一起存儲。 換句話說,文件A具有一個與文件B調用不同類的類。文件B的類記錄了文件C中一個類的錯誤。我希望文件B的類從文件A中的實例類中提取一個屬性,並且將其包含在文件C的日志記錄類中。

更直觀:

文件A:存儲->文件B:文件A的類庫(存儲)->文件C:文件B的記錄類

我需要使用文件B中對象中文件C中的日志記錄類來存儲文件A中調用對象中的屬性。

幫助我stackoverflow,您是我唯一的希望。 如果這令人困惑,我深表歉意。 我不確定這是否可能。 我試圖避免不得不重寫任何代碼。

將實例傳遞到記錄器中:

// Class A
$logger = new Logger($this);    
$logger->doSomething($someParams);


// Logger
function __construct($caller){
    $this->foo = $caller->getBar();
}

我想出了答案。 您使用bebug_backtrace()。 在下面的示例中,類“ b”具有值為“ san marino”的屬性“ store_name”,並且正在調用類“ a”。 類“ a”使用backtrace從其調用類“ b”中獲取屬性“ store_name”及其值。

<?php

class a {
private $property;
function __construct($value) {
$this->property = $value;
$btrace = debug_backtrace();
$store_name = $btrace[1]["object"]->store_name;
echo $store_name;
}
}

class b {
public $store_name = "san marino";
function __construct() {
$test = new a("Prueba");
}
}

$c = new b();

暫無
暫無

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

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