Эта функция напечатает стек, сообщающий вам, откуда он был вызван:
<code>function PrintTrace() {
$trace = debug_backtrace();
echo '<pre>';
$sb = array();
foreach($trace as $item) {
if(isset($item['file'])) {
$sb[] = htmlspecialchars("$item[file]:$item[line]");
} else {
$sb[] = htmlspecialchars("$item[class]:$item[function]");
}
}
echo implode("\n",$sb);
echo '
';
}
Вызовите эту функцию вверху файла, который включает ваш класс.
Иногда он печатается только один раз, даже если ваш класс включается два или более раз. Это связано с тем, что PHP фактически анализирует все классы верхнего уровня в файле перед выполнением любого кода и немедленно генерирует фатальную ошибку. Чтобы исправить это, оберните объявление вашего класса в if(true) { ... }
, что переместит ваш класс на уровень в области видимости. Тогда вы должны получить две трассировки до фатальных ошибок PHP.
Это должно помочь вам определить, где ваш класс включается несколько раз в сложный проект.