массивы — PHP, компилировать foreach и opline

Я пытаюсь понять, как оператор foreach интерпретируется PHP. Это привело меня к использованию gdb во время выполнения фиктивного сценария foreach.

Я заканчиваю в zend_compile.c, в zend_compile_foreach() функция. Я вижу вызов макроса ZEND_FE_FETCH_R, который перемещает внутренний указатель массива / объекта, на котором мы зациклились.

Есть несколько вещей, которые я не понимаю:

  • Как на самом деле значение возвращается zend_compile_foreach контекст
  • Вложены ли мы в zend_compile_stmt (и поэтому zend_compile_foreach) чтобы итерация произошла? Так код скомпилирован N раз? N — количество элементов в массиве / объекте
  • Что такое оплайн ?? Я вижу, что везде я смотрю, и я не знаю об этом

4

Решение

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

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

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