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, смотрите полную документацию.