Статьи

Zephir — Создание расширений PHP без знания C

Из-за того, что PHP был написан на C, долгое время единственным способом его расширения было либо положиться на нынешнее поколение энтузиастов серых бород, либо взяться за C. Для многих последнее не было вариантом. Мы, сегодняшние высококлассные разработчики, слишком ленивы, чтобы использовать такой удивительно точный, требовательный, низкоуровневый язык, ориентированный на ОКР. Большинство из нас, кто начал свою карьеру в программировании на языках высокого уровня — особенно на языках высокого уровня, которые, если честно, являются хакерами на хакерских атаках, таких как Javascript и PHP, — откровенно говоря, совершенно не заинтересованы в изучении всех магических запросов C о вас. Это не значит, что мы хуже разработчиков, чем те, кто занимается исключительно низкими уровнями — это просто два разных мира — нам просто нравится мгновенное удовлетворение от веб-разработки. Мне потребовалось бы столько же времени, чтобы пройтись по промежуточной программе на Си, как и опытному низкоуровневому разработчику, чтобы разработать довольно кроссбраузерно-совместимое радиальное контекстное меню JS. Так как же тогда разработчик PHP должен обогатить сам PHP столь необходимой функциональностью?

Phalcon

Некоторое время назад я упомянул фреймворк Phalcon в статье . Phalcon — это фреймворк, который предлагает больше, чем большинство текущих фреймворков, но заключен в расширение PHP, которое вы устанавливаете, например, IMAP, iconv, mcrypt или любое другое. Я не буду сейчас вдаваться в подробности, приведенные выше ссылки предоставляют много информации, но здесь важна величина, достигнутая командой Phalcon.

Phalcon — замечательный гибрид, созданный замечательными гибридами

Phalcon — это замечательный гибрид, созданный замечательными гибридами — людьми, которые отлично владеют как PHP, так и C. Phalcon — это золотая середина, фреймворк PHP, который настолько низок, насколько это возможно (неизмеримое повышение производительности по сравнению с другими фреймворками ), но его API все еще достаточно высокого уровня, чтобы любой опытный разработчик PHP мог использовать его, как и в любой другой среде.

Так что же такое Зефир и какое отношение он имеет к Фалкону? Как выяснилось, разработчики Phalcon поняли, что запросы на извлечение к C-проекту, подобному Phalcon, приходят слишком медленно, если сравнивать со скоростью роста популярности Phalcon — в значительной степени из-за редкости высококачественных ориентированных на открытый исходный код С разработчиками. Опасаясь узкого места, они предприняли еще одно приключение, которое готово пересмотреть мир разработки PHP, каким мы его знаем. Они решили построить Зефир.

Зефир?

Если Phalcon — это золотая середина между C и PHP, то Zephir — платина. Zephir будет (заметьте, я говорю , потому что он все еще находится на очень ранней стадии альфа) — единственным языком, который позволяет разработчикам высокого уровня разрабатывать низкоуровневые расширения PHP .

Zephir позволяет разработчикам высокого уровня создавать расширения PHP низкого уровня

Zephir будет статическим / динамически типизированным языком, который компилируется в C. Он будет иметь автоматическое управление памятью и будет обеспечивать строгое и явное, а не гибкое и неявное поведение. Цель состоит в том, чтобы скрыть ненужную сложность C от разработчиков, сделать код более отлаживаемым и создать объектно-ориентированные библиотеки, которые можно использовать непосредственно в PHP, как любое другое устанавливаемое расширение. Команда Phalcon в настоящее время переписывает всю инфраструктуру Phalcon в Zephir, готовясь к версии 2.0, которая позволит огромному пулу разработчиков PHP, использующих Phalcon, расширить его, не зная C.

Помимо использования для разработки и поддержки Phalcon, Zephir уже используется в других местах. Проект Apigility, разработанный командой Zend, будет интегрировать Zephir, чтобы позволить пользователям повысить производительность API, созданных с помощью Apigility. Более того, знание того, что Zephir будет иметь дополнительное преимущество, позволит вам написать в нем все ваше веб-приложение, скомпилировать его в C и установить на серверы вашего клиента, не раскрывая ваш код никому. Zephir выводит защиту кода, производительность приложений PHP и разработку расширений PHP на совершенно новый уровень.

Zephir позволяет вам по-настоящему закрыть источник вашего PHP-приложения, защищая вашу интеллектуальную собственность

Важно отметить, что Zephir не является заменой для любого текущего веб-языка. Это не замена C тоже. Это шлюз между C и PHP, позволяющий вам писать высокопроизводительные PHP-расширения и PHP-приложения с закрытым исходным кодом без головной боли и затрат времени на цикл разработки C. Он не будет ни копировать все функциональные возможности PHP, ни все функциональные возможности C — он также не является альтернативой. На самом деле, не каждое приложение должно быть переписано с помощью Zephir, так как это может оказаться просто пустой тратой времени — приложения, которые нужно переписать, это, например, те, которые вам интересны с близким источником, и те, которые в вычислительном отношении слишком интенсивно для интерпретатора PHP. Переписать что-то вроде WordPress в Zephir, например, было бы глупым поручением, потому что WordPress — это огромная пряжа низкокачественного спагетти-кода, и многое можно было бы получить, переписав его в соответствующий современный объектно-ориентированный PHP5.5.

Есть ли примеры кода? Как насчет производительности Фалькона?

Есть несколько примеров здесь и в документации . По сути, это очень похоже на языки, которые вы уже знаете — Javascript, PHP, возможно, даже C, что делает Zephir идеальным кандидатом для быстрого выбора.

Теперь многие задаются вопросом о влиянии производительности. Если Phalcon работает так быстро из-за того, что он написан на C, не замедлит ли его переписывание на языке более высокого уровня? Ну да и нет. Хотя это не позволит разработчикам погрузиться в мелкие мелочи, связанные с ручным распределением памяти и прочее, это позволит им работать быстрее , что, в свою очередь, позволит им быстрее выполнять итерации и улучшать дизайн, а не улучшать только существующую реализацию. Естественно, некоторые части останутся написанными на C просто потому, что просто нет возможности переписать их и сохранить их качество.

Некоторые начальные тесты текущей реализации Phalcon по сравнению с его версией Zephir можно найти здесь .

Пробую зефир сегодня

Чтобы попробовать Zephir для себя (или, если вы замечательный разработчик C и хотите помочь), вы можете проверить репозиторий Github . Оттуда вы также можете скачать, собрать и установить язык — просто следуйте инструкциям README. Предварительную документацию можно найти на домашней странице проекта Zephir, а также их блог. Для тех, кто использует TextMate или Sublime Text, здесь можно найти подсветку синтаксиса.

Дайте Фалкону и Зефиру шанс, и дайте нам знать в комментариях ниже, как они вам нравятся. Если вы попробуете Zephir и разработаете расширение с ним, не стесняйтесь, напишите мне о превращении его в учебник.

Вывод

Если вы всегда хотели улучшить PHP самостоятельно, но никогда не использовали C для этого должным образом, Zephir для вас. Если вы хотите защитить свой код от посторонних глаз и пиратства, просто повысить производительность своих приложений или расширить PHP с помощью функций, которые не могут эффективно реплицироваться через сам PHP, Zephir для вас.

Я надеюсь, что вы воспользовались этим кратким обзором этого многообещающего нового проекта, и что вы так же взволнованы, как и мы, о преимуществах, которые он может принести.