Как работает php

123
26 марта 2022, 18:30

На хабре нашел вот такую информацию:

Вначале, написанный нами код разбирается лексическим анализатором. Далее, полученные лексемы, передаются в синтаксический анализатор. Если синтаксический анализатор дал добро, то лексемы передаются транслятору, а он, в свою очередь, генерирует так называемые opcodes (operation codes). И только после этого, в дело вступает виртуальная машина PHP (та самая Zend Engine) которая и выполняет наш алгоритм из получившихся opcodes. Opcodes так же называют эдаким php-шным ассемблером.

Но также известно что php интерпретируемый язык.

Вопрос : вышеописанный метод исполняется построчно или сначала выполняется поэтапно(ожидая когда анализатор полностю проверит код) а потом уже 'опкод' выполняет построчно

Answer 1

Насколько я знаю PHP по классификации является чем-то средним между интерпретируемые и компилируемым языком. Основное различие между этими классами в том что в компилируемых языках весь текст программы переводиться в машинный код программами, которые называются трансляторами (компиляторами), только после создания исполняемого файла, алгоритм запускается в работу. В интерпретируемых же языках, программа под названием интерпретатор проходит отдельно по каждой строчке кода и отдельно их выполняет. Преимущества этого над компилируемыми языками в том что можно контролировать программу на любом ее этапе, большой же недостаток в быстродействии, т к машинный код исполняется процессором намного быстрее, и так же в завершении исполнения при первой же ошибке. Так вот в движке PHP присутствует и программа транслятор и программа интерпретатор. В целях быстродействия сначала текст программы переводиться в байт-код, но при этом исполнительный файл не создаётся, и потом уже этот байт-код интерпретируется "построчно". Таким образом выходит некий гибрид, где сначала программа транслируется (компилируется) в более быстрый байт-код, а потом эта же программа, только уже представленная байт-кодом интерпретируется и исполняется. Также это движок PHP называют интерпретатором со встроенным блоком трансляции, который оптимизирует код той самой интерпретации.

Как-то так. Надеюсь Вам это поможет!

READ ALSO
Не работает Функция changeFirstSymbol. Хэлп Гайс

Не работает Функция changeFirstSymbol. Хэлп Гайс

Всем привет! Есть задачка: Дана строкаСделайте заглавным первый символ каждого слова этой строки

269
Изменение состояния кнопок при клике на них при помощи JS

Изменение состояния кнопок при клике на них при помощи JS

Есть массив из кнопок playПри клике на play ему добавляется класс clicked, при повторном клике класс убирается

154
React. как корректно хранить состояние?

React. как корректно хранить состояние?

Пишу виджет комментариев, нужно реализовать возможность сворачивание ветки с дочерними комментариямиНа входе имеется json, который с помощью...

115
Как работает озвучивание текста с помощью speechSynthesis?

Как работает озвучивание текста с помощью speechSynthesis?

Возникла необходимость реализовать озвучивание текста на сайтеДля этого использовался метод speechSynthesis, но на некоторые вопросы, касающиеся...

190