2012-09-18 3 views
0

У меня есть файл, который содержит по существу библиотеку классов. Я регистрирую ошибки из этих классов, используя отдельный класс logEngine, который включен в файл. Я хотел бы вытащить свойство из класса, который вызывает эти классы, и хранить его вместе с зарегистрированными ошибками. Иначе говоря, файл A имеет класс, который вызывает разные классы из файла B. В файлах классов B бит из класса, расположенного в файле C. Я хотел бы, чтобы классы класса B вытащили свойство из класса instanced в файле A и включить его в класс лесозаготовительной из файла C.Доступ к объекту из вызывающего объекта

более наглядного:

файл A: Хранилище -> файл B: Библиотека классов для файла А (хранение) -> файл C: Logging класс для файла B

Мне нужно свойство вызывающего объекта в файле A, которое должно быть сохранено с использованием класса ведения журнала в файле C из объектов из файла B.

Помогите мне в stackoverflow, ты моя единственная надежда. Если это смущает, я приношу свои извинения. Я не уверен, что это возможно. Я стараюсь не переписывать код.

ответ

0

Я понял ответ. Вы используете bebug_backtrace(). В приведенном ниже примере класс «b» имеет свойство «store_name» со значением «san marino» и вызывает класс «a». Класс «a» использует backtrace для получения свойства «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(); 
} 
Смежные вопросы