Phalcon MVC

В интернете много фреймворков PHP, все они уникальные по своему высокая скорость, хорошая документация. Один из них Phalcon (Фалкон). Но Phalcon действительно необычный фреймворк по сравнению с другими платформами; это не просто очередной пакет который вы загружаете, это модуль PHP, написан на языке C.

Оглавление:
  1. Что такое Phalcon?
  2. Установка Phalcon на WampServer
  3. Скомпилированный Phalcon для лучшей производительности
  4. Применить Phalcon
  5. Модель контроллера
  6. Просмотр
  7. Phalcon Query Language
  8. Заключение

В этой статье мы разберём что такое Phalcon (Фалкон) и почему он такой особенный.

Что такое Phalcon?

Phalcon — фреймворк, создан как расширение для высокой производительности и для снижения потреблений ресурсов. Это алгоритм MVC и предлагает функции такие как ORM, кэширование, пагинатор страниц, полный список возможностей можно найти на сайте.

Уникальность Phalcon в том что вы не просто скачали архив и распаковали в каталог, как это делается в большинстве других структур. Фреймворк Phalcon устанавливается как модуль PHP. Процесс установки занимает несколько минут.

к меню ↑

Установка Phalcon на WampServer

WampServer — для разработки веб-приложений в системе Windows.

После загрузки Phalcon, распакуйте архив. Скопируйте файл php_phalcon.dll для расширения PHP. Если WAMP установлен в c:\wamp папка модуля должна быть по адресу c:\wamp\bin\php\php5.3.10\ext

Установка Phalcon
Установка Phalcon добавлять в конец файла: extension=php_phalcon.dll

Отредактируйте файл php.ini, он расположен: с:\wamp\bin\php\php5.3.10\php.ini. Его можно отредактирован с помощью Notepad или аналогичной программой. Добавить в коеце файла: extension=php_phalcon.dll и сохраните его.

Установка Phalcon
Установка Phalcon на WampServer копируем файл php_phalcon.dll

Также редактируем другой файл php.ini, который находится в c:\wamp\bin\apache\Apache2.2.21\bin\php.ini. Добавить в конец файла: extension=php_phalcon.dll и сохраните его.

Перезапустите Веб-сервер Apache. Сделать один щелчок по WampServer, значок возле часов в системном трее. Нажимаем “Перезапустить все сервисы”. Ждём пока значок станет снова зеленым. Если не работает WampServer прочти как его запустить: «Не работает WampServer».

Установка Phalcon
Установка Phalcon (Перезапустить все сервисы)

Откройте в браузере http://localhost. На странице будет отображаться Добро пожаловать . Смотрите раздел “загруженные расширения”, чтобы проверить, был ли установлен phalcon.

Установка Phalcon
Установка Phalcon Смотрите раздел “загруженные расширения”

Поздравляю! Вы установили Phalcon.

к меню ↑

Скомпилированный Phalcon для лучшей производительности

Одним из главных недостатков PHP является то, что при каждом запросе все файлы считываются с жесткого диска, переведенные в байт-код. Это вызывает потери производительности по сравнению с другими языками, такими как Ruby или Python. Вся структура Phalcon уже находящиеся в оперативной памяти, поэтому весь набор файлов инфраструктуры не нужно обрабатывать. Есть ориентиры на сайте доказывающие что он действительно имеет значительное преимущество в производительности.

Полный фреймворк Phalcon
Лучшая производительность фреймворка Phalcon

Phalcon обрабатывает в два раза больше запросов в секунду. И если вы посмотрите на историю каждого запроса, Phalcon тратит меньше времени для обработки запросов. Поэтому Phalcon быстрее многих фреймворков.

к меню ↑

Применить Phalcon

Phalcon предлагает классические черты современного PHP MVC фреймворка (маршрутизация, контроллеры, просмотр шаблона, ORM, Кэширование, и др.), так что кроме скорости, в нём нет больше ничего особенного. Все же давайте посмотрим на то, что можно сделать с Phalcon.
Во-первых там загрузочный файл, который будет вызываться при каждом запросе. Запросы отправляются в оригинальный загрузчик с помощью директивы в файле .htaccess.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>

В документации Phlacon рекомендуется использовать следующую структуру каталогов:

app/
    controllers/
    models/
    views/
  public/
    css/
    img/
    js/

Если нужно структура каталогов может быть изменена, поскольку все будет осуществляться через загрузчик public/index.php.

<?php
try {
// register an autoloader
$loader = new PhalconLoader();
$loader->registerDirs(array(
'../app/controllers/',
'../app/models/'
))->register();

// create a dependency injection container
$di = new PhalconDIFactoryDefault();

//set up the view component
$di->set('view', function(){
$view = new PhalconMvcView();
$view->setViewsDir('../app/views/');
return $view;
});

// handle the request
$application = new PhalconMvcApplication();
$application->setDI($di);
echo $application->handle()->getContent();
}
catch (PhalconException $e) {
echo "PhalconException: ", $e->getMessage();
}
к меню ↑

Модель контроллера

Контроллеры и модели будут загружаться автоматически, так что вы можете просто создавать файлы и использовать их с любой точки проекта. Контроллеры должны находится Phalcon\Mvc\Controller, место для моделей Phalcon\Mvc\Model.

Действия контроллера определяются следующим образом:

public function indexAction() {
echo 'welcome to index';
}

Модели определяются тоже не сложно:

class Users extends \Phalcon\Mvc\Model
{
}

Путем расширения класса Phalcon\Mvc\Model, вы немедленно получите доступ к некоторым удобным методам, такие как find(), save(), и validate(). Использовать так:

class Users extends Phalcon\Mvc\Model
{
public function initialize() {
$this->hasMany('id', 'comments', 'comments_id');
}
}
к меню ↑

Просмотр

Открываются базовые функции, такие как возможность передавать данные работая с макетами. Phalcon для просмотра не использовал специальный синтаксис. Хотя используют чистый PHP.

<html>
<head>
  <title>Blog's title</title>
  </head>
   <body>
   <?php echo $this->getContent(); ?>
 </body>
</html>

Phalcon имеет встроенный флэш для сообщений:

$this->flashSession->success('Succesfully logged in!');
к меню ↑

Phalcon Query Language

Phalcon имеет свои ORM, Phalcon Query Language (PHQL), которые могут быть использованы для взаимодействия с базой данных. PHQL может быть интегрирован с моделями, что можно было легко определить связь между таблицами.

Вы можете использовать PHQL путем расширения класса Phalcon\Mvc\Model\Query, а затем создать новый запрос:

$query = new Phalcon\Mvc\Model\Query("SELECT * FROM Users", $di);
$users = $query->execute();

И вместо raw SQL вы можете использовать создателя запросов вроде этого:

$users = $this->
modelsManager->
createBuilder()->
from('Users')->
orderBy('username')->
getQuery()->
execute();

Это очень удобно когда запросы становятся всё более сложнее.

к меню ↑

Заключение

Phalcon предлагает классические черты современного PHP MVC фреймворка. Основное преимущество Phalcon над другими PHP MVC фреймворками, является скорость. Если вы заинтересовались Phalcon, смотрите полную документацию.