2012-09-18 6 views
0

본질적으로 클래스 라이브러리가 들어있는 파일이 있습니다. 파일에 포함 된 별도의 logEngine 클래스를 사용하여 이러한 클래스의 오류를 기록합니다. 이러한 클래스를 호출하는 클래스에서 속성을 가져 와서 기록 된 오류와 함께 저장하고 싶습니다. 다른 말로하면 파일 A에는 파일 B와는 다른 클래스를 호출하는 클래스가 있습니다. 파일 B의 클래스는 파일 C에있는 클래스의 오류를 기록합니다. 파일 B의 클래스가 파일 A의 인스턴스화 된 클래스에서 속성을 가져 오도록하고 싶습니다. > 파일 B - 스토리지 : 파일 A에 대한 클래스 라이브러리 (저장) -> 파일 C : 로깅 클래스 파일 B호출자의 개체 속성 액세스

위한

파일 A :

시각적 파일 C.에서 로깅 클래스에 포함

파일 B의 객체에서 파일 C의 로깅 클래스를 사용하여 파일 A의 호출 객체에서 속성을 저장해야합니다.

도와주세요 stackoverflow, 당신은 나의 유일한 희망입니다. 혼란 스러울 경우 사과드립니다. 이것이 가능한지 확실하지 않습니다. 모든 코드를 다시 작성하지 않아도되도록 노력하고 있습니다.

답변

0

내가 답을 알아 냈어. bebug_backtrace()를 사용합니다. 아래 예제에서 클래스 "b"는 값이 "san marino"인 "store_name"속성을 갖고 클래스 "a"를 호출합니다. 클래스 "a"는 역 추적을 사용하여 "store_name"속성과 해당 호출 클래스 인 클래스 "b"의 값을 가져옵니다.

<?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(); 
0

는 로거로 인스턴스를 전달합니다

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


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