PHP является интерпретированным языком, а не компилируется. Тем не менее, я столкнулся с книгой, в которой упоминается, что происходит в PHP во время компиляции, и в руководстве по PHP говорится, что объявление const происходит во время компиляции . Как термин compile-time используется в отношении PHP, поскольку PHP не скомпилирован?
Если это просто означает «когда скрипт читается и переводится в подпрограммы интерпретаторов», то в чем разница между терминами compile-time и run-time?
Исходный код PHP проходит через шаг, где он компилируется в PHP Opcode. Эта идея была реализована на различных платформах, в первую очередь с Java. Теоретически, имея отдельную рабочую среду «виртуальной машины» для запуска Opcodes, разработчики языка могут отделять язык от проблем с переносимостью.
Вы можете найти список этих Opcodes в руководстве
В типичной среде PHP без кэширования кода операции шаг компиляции и шаг «run-time» неразличимы, однако, когда вы вводите «кеш ускорителя / opscode», такой как APC или продукт Zend Platform, вы можете видеть, что это отдельные этапы процесса.
После того, как скрипт был скомпилирован в PHP Opscodes, его можно запустить из кеша без необходимости перекомпилировать из источника, а именно, где эти ускорители могут значительно повысить производительность.
Если вы сосредоточены на аспекте «времени выполнения» PHP, вы видите «интерпретируемый» характер PHP, так как он требует среды выполнения, по сравнению с компилируемым / связанным языком, например c / c ++, который работает как родная операционная система.
В случае PHP, php-программа – это собственная операционная система (или родная как модуль веб-сервера собственной ОС).
В отличие от того, как Java работает внутри «виртуальной машины Java» (JVM), скрипты PHP работают внутри PHP и, следовательно, не содержат особенностей того, как операции будут выполняться операционной системой.