Путеводитель по Symfony: Диспетчер событий

В этом путеводителе мы будем рассматривать автономные библиотеки (также известные как «Компоненты»), предлагаемые Symfony для создания приложений.

Symfony предлагает компонент EventDispatcher, который позволяет выполнять основные зарегистрированные функции в нашем приложении.

Все основывается на следующем интерфейсе:

<?php

namespace Symfony\Component\EventDispatcher;

interface EventDispatcherInterface
{
    /**
     * @param string   $eventName
     * @param callable $listener
     * @param int      $priority  High priority listeners will be executed first
     */
    public function addListener($eventName, $listener, $priority = 0);

    /**
     * @param string $eventName
     * @param Event  $event
     */
    public function dispatch($eventName, Event $event = null);
}
Читать далее...

Путеводитель Symfony: Компонент HTTPKernel

В этом руководстве мы рассмотрим основные компоненты, с помощью которых создаются приложения:

  • HTTP Kenel и HTTP Foundation
  • Диспетчер событий
  • Маршрутизация и YAML
  • Внедрение зависимости
  • Консоль

Symfony предоставляет компопонет HttpKernel который реализует протокол HTTP: он конвертирует Request в Response.

Все вращается вокруг следующего интерфейса:

<?php

namespace Symfony\Component\HttpKernel;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

interface HttpKernelInterface
{
    const MASTER_REQUEST = 1;
    const SUB_REQUEST = 2;

    /**
     * @param Request $request
     * @param int     $type
     * @param bool    $catch   Whether to catch exceptions or not
     *
     * @return Response
     */
    public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true);
}
Читать далее...

Микрофреймворк Symfony

Symfony всегда можно было использовать в качестве микрофреймворка. Среди других микрофреймворков, которые позволяют вам добавлять в них все, что пожелаете, можно выделить Empty Edition и MicroFrameworkBundle.

Существует множество критериев, за счет которых фреймворк классификацируется как «микрофреймворк». Вот некоторые из них:

  • небольшой API (использование кода фреймворка в вашем приложении)
  • мало строк кода (LOC)
  • мало зависимостей (количество используемых сторонних библиотек)
  • небольшой объем (время загрузки фреймворка)
Читать далее...

Улучшенная сериализация с Symfony

Если вы когда-либо создавали сценарий экспорта или API, то вам наверняка приходилось форматировать свой контент и иметь дело с сериализацией.

В Symfony этой задачей зачастую занимается JMS Serializer (так указано в документации Symfony).

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

Читать далее...

Новое Symfony 2.8: Улучшенные формы

В списке встроенных типов форм в Symfony отсутствовало поле формы range из HTML5. Этот новый тип отображается в виде слайдера в тех браузерах, которые поддерживают элементы управления форм HTML5. Используйте атрибуты min и max, чтобы ограничить выбираемые значения:

$builder->add('rating', 'Symfony\Component\Form\Extension\Core\Type\RangeType', [
    'attr' => ['min' => 0, 'max' => 10]
]);

Формы, содержащие коллекции, позволяют индивидуально настраивать HTML, используемый для добавления новых элементов (параметр prototype ) и имени заполнителя, используемого в этом шаблоне (параметр prototype_name ). Благодаря параметру prototype_data, Symfony 2.8 также позволяет задавать данные по умолчанию каждого нового ряда коллекции:

Читать далее...

Новое в Symfony 2.8: Symfony как микрофреймворк

Микрофреймворк это термин, обозначающий «минималистичный фреймворк веб-приложений». Под этим словом разработчики обычно понимают «быстрые и небольшие фреймворки» - например, Silex. Но под минифреймфорками можно понимать также простые и более гибкие фреймворки, в которых вы можете воспользоваться различными архитектурными решениями.

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

Читать далее...

Новое в Symfony 2.8: Улучшенная консоль

Теперь к столбцам в таблице можно применять стили

В Symfony 2.8 вы можете задавать индивидуальный визуальный стиль для каждого столбца таблицы.

Для начала инстанцируйте класс TableStyle, чтобы задать характеристики стиля:

use Symfony\Component\Console\Helper\TableStyle;

$rightAligned = new TableStyle();
$rightAligned->setPadType(STR_PAD_LEFT);
Затем примените индивидуальный стиль к любому столбцу таблицы при помощи цифрового индикатора этого столбца:

use Symfony\Component\Console\Helper\Table;

$table = new Table($output);
$table->setHeaders(['#', 'Path', 'Size']);

$table->setColumnStyle(2, $rightAligned);

// ...

$table->render();
Читать далее...

Доступ к данным Google Analytics из Symfony

Существует несколько PHP библиотек, позволяющих получить данные из Google Analytics:

  • GAPI: Google Analytics PHP интерфейс
  • Google API client library: позволяет сразу работать с несколькими продуктами Google, например Google Analytics, Google+ или Google Drive

Обе эти библиотеки используют OAuth2 для авторизации (требование Google). Таким образом предоставляется безопасное соединение и доступ к данным Google Analytics.

Читать далее...