За последние 24 часа нас посетили 38113 программистов и 1808 роботов. Сейчас ищет 831 программист ...

register_tick_function

Тема в разделе "Прочие вопросы по PHP", создана пользователем php_dummy, 7 ноя 2017.

  1. php_dummy

    php_dummy Новичок

    С нами с:
    17 авг 2017
    Сообщения:
    13
    Симпатии:
    0
    Решил поэкспериментировать с этой функцией

    function a(){
    echo 'a';
    }

    function tick(){
    $bt = debug_backtrace();
    var_dump($bt);
    }

    declare(ticks=1); register_tick_function('tick');

    a();

    Скрипт отображает два трейса с одной функцией tick(). Функции a() ни в одном трейсе нет. Однако если я подключаю функцию a() через require() она в трейсе появляется. Как это понять?
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Однако потому, что ф-я debug_backtrace() возвращает не тот стек, что в вакууме, а тот, что относится к функции, в которой и была вызвана.
     
  3. php_dummy

    php_dummy Новичок

    С нами с:
    17 авг 2017
    Сообщения:
    13
    Симпатии:
    0
    Не понял. При чем тут вызов функции?
    Было так (функции в трейсе нет):
    function a(){
    echo 'a';
    }
    Стало так (функция в трейсе есть):
    require('function_a');