cotonti.com : Как получить имя файла в котором вызывается функция https://www.cotonti.com Последние сообщения в теме Cotonti en Thu, 05 Feb 2026 08:17:48 -0000 Alex300 debug_backtrace() содержит полный стек вызовов. Если получаете cotemplate - значит функция вызывается в шаблоне (tpl-файлы). Шаблоны сами не умеют выполнять PHP, по этому за них это делает шаблонизатор. Тут можно заглянуть в $backtrace[1] чтобы узнать откуда запущен рендер шаблона.

Также исключение $e, если не ошибаюсь, может содержать данные аналогичные debug_backtrace()

]]>
вт, 25 июн 2024 04:46:47 -0000
Kabak 1) В отладчике можно посмотереть. Думаю в PHP нет информации в каком файле находится та или иная функция. 

2) Посмотреть как реалигована генерация ошибок и предупреждений в Cotonti

]]>
пн, 24 июн 2024 06:20:52 -0000
Kopusha К примеру моя тема aplha и есть кастомные функции alpha.php.
там какая то функция например
 

function get_country_info_count($cat) {
    global $db, $db_pages, $cfg; 
    try {
        $stmt = $db->prepare("SELECT COUNT(*) FROM $db_pages WHERE page_state = 0 AND page_cat = :cat");
        $stmt->bindParam(':cat', $cat, PDO::PARAM_STR);
        $stmt->execute();
        $result = $stmt->fetchColumn();
        return $result;
    } catch (PDOException $e) {
        return false;
    }
}

Эта функция вызывается в разных местах - например в page.edit.php
Как мне логировать в случае ошибки где вызов функции пошел не так?
Если так


    } catch (PDOException $e) {
        $file_name = basename(__FILE__);
        cot_log('Function get_country_info_count error in file '.$file_name, 'adm');
        return false;
    }

то получу file_name alpha.php
Если же так
 

        $backtrace = debug_backtrace();
        $caller_file = isset($backtrace[0]['file']) ? basename($backtrace[0]['file']) : 'unknown';
        cot_log('Function get_country_info_count error in file '.$caller_file, 'adm');

то получу cotemplate

]]>
вс, 23 июн 2024 00:47:33 -0000