Phalcon 1.1 beta

    
    После успешного релиза PHP-фреймворка Phalcon 1.0, команда разработчиков продолжает работать над его развитием. В этой статья я хочу осветить наиболее интересные фичи, представленные в версии 1.1.0 BETA





    Пагинация в конструкторе запросов (QueryBuilder)


    Ранее пагинатор был доступен лишь для вывода данных Модели и нативных массивов. Теперь пагинация может быть использована при выводе данных произвольного запроса через конструктор QueryBuilder, который использует SQL операторы LIMIT/OFFSET. Он будет полезен для вывода больших наборов данных.

    use Phalcon\Paginator\Adapter\QueryBuilder;
    
    $builder = $this->modelsManager->createBuilder()
        ->columns('id, name')
        ->from('Robots')
        ->orderBy('name');
    
    $paginator = new Paginator(array(
        "builder" => $builder,
        "limit"   => 10,
        "page"    => 1
    ));
    
    $page = $paginator->getPaginate();
    



    Сервер очередей Beanstalkd


    Простой клиент для сервера очередей Beanstalkd теперь является частью фреймворка

    // Соединение с сервером
    $queue = new Phalcon\Queue\Beanstalk(array(
        'host' => '192.168.0.21'
    ));
    
    // Добавить задачу в очередь (простая запись)
    $queue->put(array('proccessVideo' => 4871));
    
    // Добавить задачу в очередь (с параметрами)
    $queue->put(
        array('proccessVideo' => 4871),
        array('priority' => 250, 'delay' => 10, 'ttr' => 3600)
    );
    
    while (($job = $queue->peekReady()) !== false)
    {
        $message = $job->getBody();
        var_dump($message);
        $job->delete();
    }
    



    Шифрование


    В эту версию Phalcon добавлен класс шифрования основанный на PHP библиотеке mcrypt

    // Создаём экземпляр класса шифрования
    $encryption = new Phalcon\Crypt();
    
    $key  = 'le password';
    $text = 'This is a secret text';
    
    $encrypted = $encryption->encrypt($text, $key);
    
    echo $encryption->decrypt($encrypted, $key);
    



    Assets Management


    С помощью этого компонента можно с лёгкостью управлять статичными ресурсами, такими как CSS и Javascript

    // Сначала в контроллере добавим немного CSS
    $this->assets
        ->addCss('css/style.css')
        ->addCss('css/index.css');
    
    // и чуть-чуть js-скриптов
    $this->assets
        ->addJs('js/jquery.js')
        ->addJs('js/bootstrap.min.js');
    


    а затем покажем их в шаблоне
    <html>
        <head>
            <title>Some amazing website</title>
            <?php $this->assets->outputCss() ?>
        </head>
        <body>
    
            <!-- ... -->
    
            <?php $this->assets->outputJs() ?>
        </body>
    </html>
    



    Режим Exception для ORM-валидаторов


    При валидации данных, в процессе создания/обновления записи БД, методы save()/create()/update() возвращают булево значение, т.е. FALSE, если один из параметров не прошёл валидацию. Теперь это поведение можно изменить и выбрасывать исключение:

    use Phalcon\Mvc\Model\ValidationFailed;
    
    try {
        $robot = new Robots();
        $robot->name = 'Bender';
        $robot->save();
    } catch (ValidationFailed $e) {
        echo 'Reason: ', $e->getMessage();
    }
    



    Роутинг по имени хоста


    В правилах роутинга теперь можно указать имя хоста

    $router = new Phalcon\Mvc\Router();
    
    $router->addGet('/api/robots', array(
        'module'     => 'api',
        'controller' => 'robots',
        'action'     => 'index'
    ))->setHostName('api.phalconphp.com');
    


    Так же можно использовать группу маршрутов
    $group = new Phalcon\Mvc\Router();
    
    $group->setHostName('api.phalconphp.com');
    
    $groop->addGet('/api/robots', array(
        'module'     => 'api',
        'controller' => 'robots',
        'action'     => 'index'
    ));
    
    $groop->addGet('/api/robots/{id}', array(
        'module'     => 'api',
        'controller' => 'robots',
        'action'     => 'show'
    ));
    
    $router->mount($group);
    



    Использование контроллеров в приложениях Mvc\Micro


    Для лучшей организации структуры микро-приложения в новой версии Phalcon, в качестве обработчика запроса можно указывать контроллеры (ранее можно было использовать только callable значения).

    $collection = new Phalcon\Mvc\Micro\Collection();
    
    // Немедленная инициализация
    $collection
        ->setPrefix('/posts')
        ->setHandler(new PostsController());
    
    // Ленивая инициализация
    $collection
        ->setPrefix('/posts')
        ->setHandler('PostsController', true);
    
    $collection->get('/', 'index');
    
    $collection->get('/edit/{id}', 'edit');
    
    $collection->delete('/delete/{id}', 'delete');
    
    $app->mount($collection);
    



    Послесловие


    Phalcon 1.1.0 включает и другие изменения и баг-фиксы. Полный список изменений можно посмотреть в CHANGELOG, а так же почитать документацию к этой версии фреймворка.

    Если вы до сих пор лично не опробовали производительность Phalcon, вы можете установить его прямо сейчас
    git clone http://github.com/phalcon/cphalcon
    cd build
    git checkout 1.1.0
    sudo ./install
    

    а пользователям Windows достаточно установить DLL со страницы загрузки.

    Разработчики приглашают обсудить этот релиз на форуме (который, кстати, так же написан на Phalcon) и Stack Overflow.
    Если же вы отловите баг, Github с удовольствием примет pull-реквест или failing-тест.


    Помогите сообществу, проголосовав за поддержку Phalcon в cPanel


    Разработчики Phalcon предлагают добавить поддержку фреймворка в панель управления веб-хостингом cPanel.

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

    Поддержать развитие фреймворка вы можете проголосовав за feature-реквест на сайте cPanel:
    http://features.cpanel.net/responses/add-support-for-phalconphp-extension-apache-php



    Источники:


    P.S. Текст переведён и подготовлен силами agent_j, который ввиду определённых причин не может его самостоятельно разместить.
    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 29
    • +1
      Давно присматриваюсь к Phalcon. Пока что отпугивает малое сообщество и непонятность с ситуацией, когда разработчики вдруг перестанут его поддерживать.
      Проголосовал за включение его в CPanel. Возможно, что это поможет популяризации фреймворка.
      • +3
        И хочется, и страшно :)
        • +2
          Будьте смелее! Только хардкор!:) тем более если хочется…

          Сам пользовался одно время, прям таких страшных багов не наблюдал.
          К тому же баги(если вдруг) можно исправить, унаследовав класс и написав разработчикам о проблеме. Можно порыться в исходниках и понять в чём проблема итд.

          Чем больше людей будут пользоваться этим фреймворком тем более качественным он будет.
        • +7
          image
          • +2
            Что это значит?
            • –5
              image
              • +3
                Как мне кажется, это иллюстрирует необходимость тщательно взвешивать все «за» и «против», что особенно актуально при принятии решения использовать ли Phalcon ввиду его архитектурных особенностей.
            • +2
              давно присматриваюсь, мне этот фреймворк нравится
              • НЛО прилетело и опубликовало эту надпись здесь
              • +1
                Фреймворк вообще мечта. Но как заказчику впарить такое чудо?
                • +1
                  Покажите тесты производительности в сравнении с другими фреймворками. Если скорость далеко не главный показатель, то может и правда не стоит.
                  • 0
                    Я вообще даже не представляю как его пропихнуть, ведь в итоге все равно получится: Он быстрый! Класный! Волшебный! Но работать у вас на хостинге не будет…
                    • +1
                      Ну я давно использую выделенный виртуальный сервер. Ставишь и настраиваешь что хочешь. Вроде не сильно дороже обычного хостинга.
                • +1
                  Спасибо esc за вывод меня из read-only!

                  ozware, Skull, не надо бояться. Если есть опасения на счёт стабильности или поддержки, просто поиграйтесь с фреймворком, напишите «домашнее» приложение, ведь не обязательно сразу брать его в продакшн.
                  • +2
                    В принципе я считаю, что подобное решение должно быть в cPanel. По крайней мере его всегда можно будет использовать на недорогих хостингах. Тогда проблем с заказчиками не будет, а фреймворк однозначно хорош. Ещё бы желательно «русское братство» к нему и тогда популярность возрастёт уж точно. Тем более проголосовав мы ничего не теряем, а только приобретаем новую возможность в cPanel.
                  • –1
                    Чего то у меня проблема с использованием контроллеров в приложениях Mvc\Micro. Не видет вообще

                    $collection->setPrefix('/posts');

                    Тупо ругается на «Call to undefined method Phalcon\Mvc\Micro\Collection::setPrefix()» при ленивой инициализации. Посмотрел в исходниках такого метода вообще нету. Может я чет не так делаю?
                    • 0
                      Хабр не самое оптимальное место для решения таких проблем, давай во вконтактике или на форуме решим проблему, или в личке
                      • 0
                        Это баг бета-версии
                        я создал баг-репорт
                      • +1
                        А есть ли какие-либо средства для быстрой генерации админ интерфейса? Мои поиски не увенчались успехом.
                        • +1
                          Есть:
                          — Phalcon Developer Tools — генерируют CRUD интерфейс.
                          — В ниже же есть Web Interface, для управления данными без дополнительной генерации кода: vimeo.com/42367665
                        • 0
                          Жаль что сейчас вот этот запрос на гитхабе выдаёт «We couldn't find any repositories matching 'Phalcon boilerplate' „
                          • 0
                            Подскажи что ожидаешь найти по такому запросу, сделаем.
                            • 0
                              Ожидаю увидеть каркас приложения. Обычно такие каркасы более «заточены» к определённым технологиям и решаемым задачам.
                              Помимо этого, когда вижу каркасы от пользователей, не связаных с создателями самого framework'a, значит у кого-то он используется на постоянной основе. Лично для меня это важно.
                            • 0
                              Вы хотите найти некий шаблон для приложения?
                              Загляните сюда github.com/phalcon/mvc
                              • 0
                                Не увидел этот репозиторий. Спасибо, на недели попробую.
                              • 0
                                Раз есть callback, дополню себя.
                                Если framework позициорнирует себя как сверх быстрый и достаточно функциональным, было бы не плохо, где-нибудь на сайте видеть список реальных сайтов, работающих на данном решении.
                                Я думаю это тоже даст +100 к карме framework'a

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.