Где хранятся скомпилированные функции?

Я пытаюсь понять, как PHP работает внутри. Я написал расширение Zend и удалил «zend_compile_file», затем сбросил возвращенный zend_op_array *. Я думаю, что понимаю большую часть происходящего, но пока не понимаю, где в этой структуре будут находиться коды операций скомпилированной функции. Скажем, например, что я компилирую этот файл:

<?php
function test($a, $b) {
return $a + $b;
}

echo test(5, 10);
?>

Тогда сброшенные коды выглядят так:

opcode             op1        op2        return
------------------------------------------------
ZEND_INIT_FCALL    UNUSED     "test"     UNUSED
ZEND_SEND_VAL      5          UNUSED     UNUSED
ZEND_SEND_VAL      10         UNUSED     UNUSED
ZEND_DO_UCALL      UNUSED     UNUSED     ~0
ZEND_ECHO          ~0         UNUSED     UNUSED
ZEND_RETURN        1          UNUSED     UNUSED

Это довольно просто понять: она вызывает функцию «test» с параметрами 5 и 10, помещает результаты во временную переменную ~ 0 и затем вызывает echo с этой переменной.

Мой вопрос: где компилируется тест? Где его коды операций?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]