Готовимся к HTTP/2: Руководство для веб-дизайнеров и разработчиков

http2Протокол передачи гипертекста (HTTPангл. HyperText Transfer Protocol) - протокол, который управляет соединением между вашим сервером и браузерами клиентов. Впервые после 1999 года, появилась новая версия этого протокола, и это обещает значительно ускорить каждый сайт.

В этой статье мы опишем основы HTTP/2 для дизайнеров и разработчиков. Я объясню некоторые ключевые особенности нового протокола, рассмотрю совместимость (серверную и браузерную) и остановлюсь подробнее на вещах, над которыми нужно задуматься, поскольку все чаще видим внедрение HTTP/2. Прочитав эту статью, вы получите обзор того, что нужно изменить в вашей работе в кратко- и долгосрочной перспективе. Также я включу множество дополнительных ресурсов, на тот случай, если вы захотите углубится в вопрос. Моя цель - предоставить достаточное количество знаний, которое поможет принят правильное решение о переходе на HTTP/2.

Новое в PHP 7: оператор объединения со значением NULL

Не слишком броское имя для оператора, но раз уж php 7 принес нам удобный оператор объединения со значением NULL (англ. null coalesce operator), покажем пример.

У php 5 уже есть тернарный оператор, который проверяет выражение и потом возвращает второй элемент, если оно истинно и третий если ложно:

echo $count ? $count : 10; // выводит 10

Удалить дефолтный блок sonata.admin.block.admin_list у SonataAdminBundle

При использовании SonataAdminBundle и SonataBlockBundle захотелось удалить дефолтный блок. 

Толку от него мало, он просто дублирует функционал бокового меню на дашборде.

При установке SonataBlockBundle, если мы просто напишем у конфигурации:

sonata_block:
    default_contexts: [sonata_page_bundle]
    blocks: []

(в будущем будем добавлять свои блоки, но для начала просто ставим пустой массив), то отловим ошибку.

Использование php-генераторов

Несмотря на то, что php-генераторы доступны с php 5.5.0, они все еще почти не используются. Более того, большинство разработчиков, которых я знаю, понимают, как работают генераторы, но не видят, когда они могут быть полезны в реальной жизни.

Да, генераторы определенно смотрятся хорошо, но знаете...  Я не понимаю, где они могут быть полезными для меня, разве что для расчета последовательности Фибоначчи.

И они не ошибаются, ведь даже примеры в php-документации слишком упрощены. Они только объясняют, как эффективно реализовать range или итерировать по строкам файла.

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

Symfony Blog Bundle

HarentiusBlogBundle - бандл для  блога/простого портала (Или сложного, если с  наследованием бандлов и расширением). Движок этого сайта.

В качестве бэкенда используется SonataAdminBundle. Реализовано:

1. Админка (WYSIWYG, ckeditor), загрузка картинок, аудио, плеер.

2. Теги, категории, архивы, облако тегов

3. Статистика

4. RSS-feed (требует доработки)

5. "Умное" кэширование всего и вся, контент отдается очень быстро

Для "успокоения души" осталось:

1. Тесты

Итерация по периоду времени в php

Неоднократно приходилось работать на php со списком дат (по дням, к примеру) если есть начало и конец периода ($dateStart, $dateEnd). Например, для того, чтобы синхронизировать с бекендом рабочие/выходные дни для DatePicker из jQueryUi. Или, если нужно выводить отчеты по дням.

Предлагаю несколько вариантов решения этой задачи, как наиболее очевидным способом, так и более изящным (как мне показалось).

ru en

Symfony Widgets Bundle

Widgets Bundle - бандл для легкого управления виджетами, для отображения которых нужна только клиентская часть. Включает в себя функционал как клиентской, так и админ части (добавляет админ классы для SonataAdminBundle и зависим от нее). Можно использовать (к примеру) для добавления счетчиков, баннеров, кодов различных рекламных сетей (adsense и т.д.), при этом управляем всем в одном месте (админ панель).

Был написан во время разработки этого блога.