Статьи

Phalcon 2.0 Alpha Landing

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

Сегодня команда достигла нового рубежа, который, безусловно, заслуживает обсуждения. Намного раньше, команда Phalcon объявила о скором выпуске Phalcon 2.0 alpha 1 .

Phalcon 2

Phalcon 2 — это полное переписывание оригинальной Phalcon Framework на новом языке Zephir. Как обсуждалось ранее , Zephir — это производная от PHP смешанного типа (поддерживаются как статические, так и динамические типы), которая позволяет разработчикам писать код «почти PHP» и компилировать его в расширения на основе C для PHP, устанавливаемые как и любые другие (iconv , imap, imagick и т. д.). Phalcon 2 был построен почти полностью на этом языке, и теперь его проще, чем когда-либо поддерживать, обновлять и, главное, принимать вклады сообщества. В качестве доказательства работоспособности, команда Phalcon запускает свой сайт на Phalcon 2 здесь .

Phalcon 2.0 работает с текущей версией 1.3 (он ввел некоторые оптимизации, которых нет и пока не требуется в 2.0), и строится вокруг существующих классов 1.3 для обеспечения обратной совместимости. Чтобы увидеть, какие классы были перенесены на данный момент, просмотрите следующую таблицу . Если вы хотите помочь в переносе, отправьте запрос на выборку по своему усмотрению — особенно модульные тесты. Большинство перенесенных компонентов просто еще не были протестированы, даже после полной разработки.

Зефир и создание расширений

Zephir сейчас находится в версии 0.3 и может использоваться широкой публикой для написания пользовательских расширений для PHP. Zephir поддерживает все стандартные логические структуры, к которым вы привыкли (кроме «else if»), и позволяет предварительно объявлять переменные по типу, чтобы упростить компиляцию в высокооптимизированный C-код. Важно отметить, что Zephir — это язык компиляции, опережающий время, а это означает, что шаг компиляции может просто сделать вас менее продуктивным, если вы привыкли к быстрой итерации и тестированию. Однако долгосрочные выгоды того стоят.

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

Так что я могу с этим сделать? Всегда хотел закрыть ваше PHP-приложение? Хотите знать, насколько быстрее будет статистический расчет бэкэнда вашей компании, если он будет работать в C? Вы можете сделать все это и многое другое сейчас. Во-первых, посмотрите эту заставку Vimeo о создании вашего первого расширения Zephir.

Создание вашего первого расширения PHP с Zephir из Phalcon Framework на Vimeo .

Затем, следуйте инструкциям , прочитайте документы и поиграйте. Если вы в конечном итоге сделаете что-то кроме того, чему учат учебники, мы будем рады опубликовать ваш шаг за шагом.

Пример класса Hello World, как этот:

namespace Test;

/**
 * This is a sample class
 */
class Hello
{
    /**
     * This is a sample method
     */
    public function say()
    {
        echo "Hello World!";
    }
}

скомпилируем в это:

 #ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "php.h"
#include "php_test.h"
#include "test.h"

#include "kernel/main.h"

/**
 * This is a sample class
 */
ZEPHIR_INIT_CLASS(Test_Hello) {
    ZEPHIR_REGISTER_CLASS(Test, Hello, hello, test_hello_method_entry, 0);
    return SUCCESS;
}

/**
 * This is a sample method
 */
PHP_METHOD(Test_Hello, say) {
    php_printf("%s", "Hello World!");
}

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

Содействие

Вы можете внести свой вклад в более быструю разработку и лучшее тестовое покрытие Phalcon 2.0, установив его, как обычно, только с версии 2.0.0. филиал . Обратите внимание, что это заменит вашу текущую установку Phalcon — так что используйте ее только в средах разработки, желательно что-то вроде коробок Vagrant. Для получения более подробной информации об установке Phalcon на виртуальной машине Vagrant см. Эту статью .

Полная процедура установки выглядит следующим образом:

 git clone http://github.com/phalcon/cphalcon
git checkout 2.0.0
cd ext
sudo ./install-test

В любой среде * nix это просто клонирует обычное хранилище, переключается на ветку 2.0.0 и затем устанавливается как обычно. API, по большей части, идентичен тому, что было, поэтому переход не должен быть очень сложным — и если вы столкнетесь с какими-либо ошибками, команда Phalcon будет предлагать отчеты об ошибках на странице проблем GitHub, желательно после модульных тестов, которые демонстрируют ошибки Для хорошего обзора участия в проекте с открытым исходным кодом на GitHub, пожалуйста, смотрите здесь и здесь .

Чтобы внести дальнейший вклад в Phalcon без особых усилий , подумайте над решением этой проблемы, поскольку она имеет целью установить Phalcon на Google App Engine, как описано здесь , и создаст самую мощную на сегодняшний день среду PHP, превосходящую даже HHVM .

Вывод

Phalcon продвигается быстрее и лучше, чем кто-либо ожидал. Мы можем ожидать выхода полной стабильной версии ко 2-му кварталу 2014 года, ознаменовав год разработки Zephir и объявления Phalcon2. Фреймворк, вероятно, будет безопасен для использования в производственных приложениях задолго до этого.

Если вы экспериментируете с Phalcon 2 или Zephir, пожалуйста, напишите нам — мы хотели бы опубликовать некоторые учебники, которые вы пишете. Если у вас есть идея или вы что-то создали, но чувствуете, что плохо пишете или плохо говорите по-английски, тем не менее, свяжитесь с нами — мы найдем способ.