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

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

Также редактировать другой файл php.ini, который находится в c:\wamp\bin\apache\Apache2.2.21\bin\php.ini. Добавить в конец файла: extension=php_phalcon.dll и сохраните его.
Перезапустите Веб-Сервер Apache. Сделать один щелчок по WampServer, значок возле часов в системном трее. Нажимаем “Перезапустить все сервисы”. Ждём пока значок станет снова зеленым.

Откройте в браузере

Поздравляю!, Вы установили Phalcon.
Скомпилированный Phalcon для лучшей производительности
Одним из главных недостатков PHP является то, что при каждом запросе, все файлы считываются с жесткого диска, переведенные в байт-код. Это вызывает потери производительности по сравнению с другими языками, такими как Ruby или Python. Вся структура 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, смотрите полную