ECHO
и YIELD
. Интересно, насколько такой формат байт-кода более (менее?) пригоден для оптимизации.Ну например можно понять почему необычный код работает так необычно. Предлагаю на практике посмотреть какие опкоды генерирует строка:
echo print(5) . print(6) . print(7);
Т.к. без понимания этого — результат выполнения может порушить психику особо восприимчивых :D
так как выполнение будет справа на лево работать.
Ну это довольно очевидно для тех, кто знает, что пых правоассоциативный. Хорошо, а в этом варианте?
$items = [1, 2, 3, 4];
foreach ($items as &$i) {
var_dump($i);
}
foreach ($items as $i) {
var_dump($i);
}
Эту особенность, думаю, как раз через опкоды только можно раздебажить. У меня логических объяснений нет.
Для подобных циклов крайне рекомендуется после цикла писать
unset($i);
1,2,3,3
Что значит "даст"? VM в пыхе ещё со время fi версии есть. Тот же опкеш и ускоряет загрузку путём избавления кеширования байткода и выгрузки оного напрямую в VM, ну если грубо.
*Прошу прощения, по-инопланетянски написал =)
Имел ввиду, что опкеш сразу отдаёт в VM на выполнение байткод, вместо чтения и парсинга файлов каждый раз.
Виртуальная Машина PHP 7