Статьи

PhalconPHP: еще один PHP Framework?

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

В этой статье мы кратко рассмотрим, как выглядит Phalcon и что делает его таким особенным.

Что такое Фалкон?

Phalcon — это фреймворк с полным стеком. Он продвигает архитектуру MVC и предлагает такие функции, как ORM, библиотека объектов запросов, движок шаблонов, кэширование, разбиение на страницы … полный список функций можно найти на его веб-сайте .

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

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

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

Phalcon-01

Phalcon обслуживает более чем вдвое больше запросов CodeIgniter в секунду. И когда вы смотрите на время на запрос, 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 предлагает использовать следующую структуру каталогов:

  приложение/
     контроллеры /
     модели /
     взгляды/
   общественности /
     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();
}

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

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

Действия контроллера определяются так:

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

Модели тоже довольно просты:

 class Users extends PhalconMvcModel
{
}

Расширяя класс PhalconMvcModelfind()save()validate() И вы можете использовать отношения как:

 class Users extends PhalconMvcModel
{
public function initialize() {
$this->hasMany('id', 'comments', 'comments_id');
}
}

Взгляды

Представления предлагают базовую функциональность, такую ​​как возможность передавать данные в ваши представления и работать с макетами. Виды Phalcon не используют специальный синтаксис, как, например, Twig или Blade. Они используют чистый 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 (PHQL), который можно использовать, чтобы сделать взаимодействие с базой данных более выразительным и чистым. PHQL можно интегрировать с моделями, чтобы легко определять и использовать отношения между вашими таблицами.

Вы можете использовать PHQL, расширив класс PhalconMvcModelQuery

 $query = new PhalconMvcModelQuery("SELECT * FROM Users", $di);
$users = $query->execute();

И вместо такого необработанного SQL вы можете использовать построитель запросов следующим образом:

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

Это может пригодиться, когда ваши запросы усложняются.

Вывод

Phalcon предлагает классические возможности современной MVC-среды PHP, поэтому она должна быть удобной в использовании, поэтому в этом смысле это просто еще одна PHP-среда. Но где он действительно выделяется среди других, так это его скорость. Если вы хотите узнать больше о Phalcon, ознакомьтесь с документацией по фреймворку . Обязательно попробуйте!

Изображение через Fotolia