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, который ввиду определённых причин не может его самостоятельно разместить.

ссылка на оригинал статьи http://habrahabr.ru/post/177691/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *