В настоящее время большинство разработчиков просто не может себе представить эффективное развитие в сфере WEB без использования механизмов, которые делают все намного проще и быстрее. Но, как мы все знаем, ничто не является совершенным. Чем фреймворк больше и чем он более всеобъемлющий, тем более вероятно, что это больно отразится на производительности вашего веб-сайта или приложения. Тем не менее, есть фреймворк Phalcon, способный бросить вызов этому высказыванию.
Phalcon является PHP-фреймворком с открытым исходным кодом, выпущенным в 2012 году.
В принципе, каждый PHP-фреймворк утверждает, что он уникален, предоставляя в качестве доказательства перечисление некоторых специфических особенностей, принципы проектирования и безупречную документацию. Но среди всех этих решений, Phalcon открывается как действительно уникальный фреймворк. В отличие от большинства фреймворков, он не установлен просто как каталог в вашем проекте, он написан на языке Zephir, транслируемом в C, скомпилирован и поставляется в виде C-расширения PHP. Вам не нужно учить или использовать язык C, так как вся функциональность реализована в виде PHP-классов, готовых для использования. Phalcon также имеет слабую связность, что позволяет использовать его объекты в качестве компонентов вашего приложения в зависимости от его потребностей. Цель такого подхода - сделать фреймворк быстрее без ущерба для его функциональности и без понижения его до микрофреймворка.
Что такое фреймворк?
В течение последних нескольких лет мы наблюдали распространение фреймворков. Под термином "фреймворк" мы имеем в виду стандартный набор готовых инструментов и компонентов, которые ускоряют разработку приложений. Они помогают в написании приложений, которые имеют сплоченную, легко читаемую, простую для понимания структуру (модели MVC, в частности) и код. К сожалению, из-за этого страдает производительность. В большинстве случаев, чем больше структура, тем сильнее она влияет на быстродействие конечного продукта.
Я хочу, чтобы мое маленькое приложение было быстрым - это означает, что фреймворк будет бесполезен для меня?
Вовсе нет. Если ваше приложение маленькое и производительность является одним из приоритетов, вы можете использовать так называемые микрофреймворки - меньшие версии более крупных структур, которые стремятся обеспечить основные функциональные возможности без ущерба для производительности. Но что, если ваше приложение будет требовать добавления все более и более сложных компонентов в будущем, чтобы в полной мере использовать его потенциал и увеличить его популярность? Скорее всего приложение должно быть полностью переписано с использованием полноценного фреймворка.
Как работает PHP?
- PHP имеет динамическую типизацию без необходимости явного указания типов.
- PHP интерпретируется (а не компилируется).
- Каждый раз, когда скрипт загружается, PHP должен интерпретироваться.
- Если не используется акселератор, кэширующий байткод (например, такой как Zend OPcache), проверка синтаксиса тоже выполняется каждый раз, когда скрипт загружается.
Как работают традиционные PHP-фреймворки?
- Множество файлов с классами и функциями считываются при каждом запросе на сервер, что приводит к постоянной загрузке жёсткого диска - который и является "узким местом" современных компьютеров в контексте производительности.
- Современные фреймворк используют "ленивую" технику загрузки (автозагрузки) для загрузки и выполнения только непосредственно нужного кода.
- Непрерывная загрузка/интерпретация может быть долгой, ресурсозатратной и повлиять на производительность вашего приложения.
- При использовании фреймворков большая часть кода остается неизменной в процессе эксплуатации. Зачем загружать и интерпретировать его каждый раз?
Как работают C-расширения PHP?
- Расширения C загружаются вместе с PHP один раз в процессе работы веб-сервера.
- Классы и функции, предоставляемые расширением, готовы для использования любым приложением.
- Код не интерпретируется, так как он скомпилирован для конкретной платформы и процессора.
Как работает Phalcon?
- Компоненты слабо связаны. Вы можете использовать компоненты, которые вы хотите, как вам удобно.
- Оптимизация на низком уровне обеспечивает самое низкое потребление ресурсов среди MVC-приложений.
- Взаимодействие с базами данных осуществляется с максимальной производительностью с помощью ORM, реализованной для PHP через C.
- Phalcon непосредственно взаимодействует с PHP, так что он может получить быстрый доступ к внутренним структурам, для оптимизации их выполнения.
Phalcon - идеальный баланс между возможностями и производительностью
Когда речь идет о создании приложений - вы не хотите идти на компромисс, не так ли? Если это действительно так, то вы должны обязательно обратить внимание на Phalcon. Phalcon предоставит вам все типичные черты больших и комплексных фреймворков, но в то же время, так как он поставляется в виде модуля C на основе языка PHP, его скомпилированные компоненты выполняются гораздо быстрее, чем традиционные фреймворки написаные на чистом PHP. Phalcon реализует многие типичные решения - такие как внедрения зависимостей, например - но они сильно отличаются от тех, которые обычно предоставляются в большинстве фреймворков, и являются гораздо более практичными. Еще один интересный и примечательный факт - разработчики Phalcon создали новый язык программирования высокого уровня под названием Zephir. Вы можете узнать больше об этом здесь - https://zephir-lang.com.
Почему Phalcon?
Есть много причин, почему вы должны по крайней мере дать Phalcon шанс. Просто перечислим некоторые из наиболее важных преимуществ этого фреймворка:
- Это самый быстрый PHP фреймворк.
- Он использует мало ресурсов сервера.
- Он предоставляет все стандартные компоненты, включая ORM (встроенную поддержку как SQL и NoSQL), MVC, маршрутизаторы, REST, внедренные зависимости, кэш, шаблонизаторы, ACL, и многое другое.
- Он может быть использован в качестве микро- и макрофреймворка.
- Понятная и широкая документация.
- Растущее с каждым днем дружественное сообщество, готовое предоставлять помощь.
- Поддерживает PHP7.
Так что, казалось бы, он совершенен?
Конечно, нет. Перед тем, как погрузиться в Phalcon, вы должны знать, что в силу его природы как PHP-модуля, написанного на C, его установка не так проста. Он должен быть установлен и скомпилирован администратором. В некоторых случаях, вам необходимо обратиться к вашему хостинг-провайдеру, чтобы сделать это. Впрочем, многие хостинг-компании предлагают Phalcon сразу. Кроме того, отладка ядра Phalcon является довольно сложным занятием. С другой стороны, это действительно хорошо отполированый продукт и вы не будете натыкатся на множество ошибок. Если вы действительно хотите глубокого погружения в Phalcon, вы всегда можете найти правильный инструмент для отладки его производительности. Вы можете найти подробные инструкции по этому вопросу на официальном сайте проекта Phalcon.
Несколько слов о скорости
Он очень быстрый. Но, чтобы дать вам более полную картину, давайте посмотрим на некоторые тесты. Мы предлагаем вам взглянуть здесь - https://github.com/kenjis/php-framework-benchmark (бенчмарки фреймворков) и здесь - https://github.com/kenjis/php-orm-benchmark (бенчмарки ORM). Ниже вы можете найти результаты тестов четвертого квартала 2015 года:
Компоненты Phalcon
Фронтенд:
- Шаблонизатор Volt - шаблонизатор с мастером шаблонов, представлений и т. д.
- Кэш - шаблоны и представления кэшируются.
- Теги для генерации HTML - пример, чтобы показать возможности:
{{javascript_include("JavaScript/jquery.js")}}
Бэкенд:
1. Внедрения зависимостей с использованием объектно-реляционного отображения - больше не надо писать строки подключения к базе данных и SQL-запросы. Хотите найти пользователя?
User::find(array("email" => "jacksonfdam@gmail.com"));
2. Менеджеры событий - эта услуа позволяет выполнять действия до и/или после каждого запроса и не только - она полностью настраиваема и применима к любому классу.
Командная строка - без неё пришлось бы применять операции копирования-вставки к большому числу файлов и папок. Эта функция позволяет создавать проекты, контроллеры, модели и представления посредством простых команд. Новый проект:
phalcon project myAwesomePhalconProject
Новый контроллер:
phalcon controller Posts
Новая модель:
phalcon model —table-name Users
ORM ищет таблицы в базе данных с параметрами проекта, получает атрибуты и формирует модель.
Как начать использование Phalcon?
Если вам интересно как начать использовать Phalcon, мы предлагаем следующие шаги:
Если вы используете Vagrant, скачать и ознакомиться со средой разработки Vagrant доступной на Github - https://github.com/phalcon/vagrant
Если вы используете Docker, загрузите этот стабильный пакет - https://github.com/szeist/docker-phalcon,
а также Apache и PHP7 пакет - https://github.com/ szeist/ docker-phalcon, который уже включают в себя структуру Phalcon.
Пользователи Windows тоже не остались с пустыми руками - получить библиотеку DLL можно здесь - https:// phalconphp.com/ pl/download/ windows
Вам также потребуется список команд - https://phalconphp.com/ pl/ download, необходимых для установки и компиляции Phalcon на Linux/Unix/Mac.
Если у вас уже установлен Phalcon, либо возникли проблемы с ним, то в интернете полно качественных ресурсов.
Наиболее важные из них включают в себя официальную документацию - https:// docs.phalconphp.com/ en/latest/ index.html (доступна на нескольких языках) и Phalcon,
конечно же, хорошо известен и любим на stackoverflow.com - http:// stackoverflow.com/ questions/ tagged/ phalcon.
Если Вы хотите оставаться в курсе событий:
сайт Phalcon - https://phalconphp.com/pl/,
официальный блог - https://blog.phalconphp.com/,
страница на Facebook - https://www.facebook.com/ pages/Phalcon-фреймворк/ 134230726685897,
страница Twitter - https:// twitter.com/ phalconphp,
страница Google Plus - https://plus.google.com/+PhalconPHP/videos,
страница Github - https:// github.com/ phalcon/ cphalcon.
Phalcon обеспечивает по-настоящему уникальный и свежий взгляд на фреймворки, и мы считаем, что он выделяется среди них достаточно, чтобы по крайней мере можно было дать ему шанс. Может быть, именно он станет вашим новым инструментом для создания быстрых веб-приложений?