Я помню, когда я впервые начал изучать PHP, многие интервьюеры часто спрашивали меня, что такое PHP, и стандартный ответ в то время был таков: PHP — это слаботипизированный динамический скриптовый язык с открытым исходным кодом, бесплатный, сокращение от Hypertext Preprocessor.
Это лишь поверхностное объяснение, PHP для меня инструмент, молоток в моей руке, хотя этот молоток часто высмеивают как молоток с гвоздодерами с обеих сторон.
Особенности PHP
многопроцессная модель
PHP разработан с многопроцессорной моделью. Преимущество этого заключается в том, что запросы не мешают друг другу, а сбой запроса не повлияет на другие процессы. Как набор инструментов, который был первоначально использован только для персональных веб-сайтов, нет ничего только В этом дизайне. Неуместное, поскольку приложение PHP становится больше, а количество посещений увеличивается, этот метод, очевидно, неуместно, потому что накладные расходы на начало процесса не рестораны для массовых запросов, поэтому теперь PHP в основном работает под управлением Из PHP-FPM-FPM, это менеджер процессов PHP. Он расположен в памяти и запускает некоторые процессы PHP в режиме ожидания. Когда запрос включен, процесс выделяется для обработки. После обработки PHP процесс перерабатывается, Но процесс не разрушен, что позволяет PHP также реагировать на запросы на высокий трафик.
Конечно, существуют также многопоточные решения PHP и решения на основе сопрограмм, которые позволяют PHP более эффективно обрабатывать WEB-запросы.
слабо типизированный
В отличие от JAVA и C/C++, PHP является типизированным языком. Переменной не нужно определять свой тип в момент объявления, и тип также будет меняться явно или неявно во время выполнения. Это также одна из причин быстрая и удобная разработка и применение PHP.
разное
Режим расширения Zend Engine + Ext уменьшает внутреннюю связь и может легко добавлять и удалять функции в самом PHP.
Синтаксис простой, обязательных спецификаций не так много, а стиль программирования может быть выработан процедурным или объектно-ориентированным способом, ну и конечно же функциональным.
Архитектура PHP
МАГУРА ТЕКУЩИЙ версии PHP и PHP5 PHP7 для архитектуры, как показано выше, существует четыре основных конфигурации системы, снизу вверх - это Zend Engine, расширение расширений, интерфейсы SAPI, верхнее приложение.
Зенд Двигатель
Движок Zend был добавлен в PHP после PHP4.Это переписанный оригинальный интерпретатор PHP.В целом он разработан на языке C.То есть, PHP можно понимать как программное обеспечение на языке программирования, написанное на C. Функцией движка является преобразование кода PHP. Код переводится на промежуточный язык, называемый кодом операции, который похож на ByteCode (байт-код) JAVA.
Движок выполняет четыре шага в PHP-коде:
- Лексический анализ Сканирование (Lexing), которое преобразует PHP-код в языковые фрагменты (токены).
- Парсинг Парсинг, преобразование токенов в простые и осмысленные выражения.
- Компиляция Компиляция, выражение компилируется в код операции.
- Выполните Execution, чтобы код операции выполнялся последовательно, один за другим, для реализации функций, выраженных кодом PHP.
APC, Опчче эти расширения могут быть Opcode cache для ускорения работы PHP приложений, вы можете использовать их в запросе, чтобы временно пропустить первые три шага еще раз.
Движок также реализует базовые структуры данных, выделение памяти и управление ею, а также предоставляет соответствующие методы API для внешних вызовов.
Расширения
Общие встроенные функции и стандартные библиотеки реализуются через расширения.Они называются основными расширениями PHP.Пользователи также могут устанавливать расширения PHP в соответствии со своими требованиями.
SAPI
SAPI — это аббревиатура от Server Application Programming Interface, который представляет собой интерфейс программирования серверных приложений на китайском языке. Он позволяет PHP обмениваться данными с периферийным устройством с помощью ряда функций-ловушек. SAPI — это агент PHP и внешней среды. внешняя среда, то есть внутренний PHP, предоставляет набор фиксированных и унифицированных интерфейсов, так что реализация самого PHP не может зависеть от сложной внешней среды и сохраняет определенную независимость.
Благодаря отделению SAPI PHP больше не может думать о том, как быть совместимым с различными приложениями, и само приложение может реализовывать различные методы обработки в соответствии со своими характеристиками.
Верхнее приложение
Программы PHP, написанные программистами, будь то веб-приложения или приложения, работающие в режиме Cli, являются приложениями верхнего уровня, и основная работа программистов PHP заключается в их написании.
Суммировать
Эти вещи, очевидно, легче понять, если вы изучали разработку для Android, потому что архитектура Android очень похожа на архитектуру PHP. Когда вы это поймете, вы поймете, почему основатель PHP сказал, что разработка PHP не требует фреймворка, потому что сам дизайн PHP — это фреймворк. Zend — двигатель, Ext — колесо, руль и другие компоненты автомобиля, SAPI — дорога.
Для этого контента некоторые люди могут найти его немного бесполезным, потому что многие параноики, что они просто водители, зачем водителям знать, как работает машина, и даже насмехаются над знанием того, как сделать машину. Раньше я так думал, пока не перевел документацию Laravel, автор Laravel вдохновил меня, а также послал эти слова вам, прочитавшим эту статью:
При использовании любого инструмента в «реальном мире», если вы понимаете, как он работает, вам будет удобнее им пользоваться. То же самое касается разработки приложений. Когда вы поймете, как работают ваши инструменты разработки, вам будет удобно их использовать.
Цель этого документа — помочь вам лучше понять, как работает фреймворк Laravel и принцип его работы. Все будет так «волшебно» благодаря всестороннему пониманию фреймворка, и вы будете более уверенно создавать свое приложение.