Статьи

Обзор PHPSummerCamp

PHPSummerCamp 2014 закончен. Трехдневные практические семинары с экспертами из их областей предоставили всем нам новые идеи, перспективы и хитрости. Хотелось бы мне участвовать во всех семинарах, но это просто не вариант. Поэтому я расскажу о тех, к которым я присоединился.

прибор

Перед конференцией нам дали устройство Virtualbox. Для непосвященных устройство представляет собой предварительно сконфигурированный виртуальный блок, что-то вроде базового блока при использовании Vagrant, с предварительно установленным предварительно сконфигурированным программным обеспечением внутри него. Теоретически, простая загрузка должна позволить вам иметь ту же среду, что и все остальные. На практике это случается редко — огромная часть времени первого семинара была поглощена проблемами конфигурации и совместного использования папок.

К сожалению , Vagrant не использовался для создания единой среды разработки для всех, но устройство работало на удивление хорошо. Настройка общего ресурса samba И поддержание согласованности символических ссылок на моей машине с Windows заняли не более пары минут, и хотя я могу только представить, какого черта они пережили при его настройке, я полностью ценю простоту использования, созданную для него. нас, зрителей. Молодцы, как докладчики, так и организаторы!

1 день

Основы Symfony

В первый день я присоединился к семинару по основам Symfony Райана Уивера . Абсолютно превосходный ветеран из KNP Labs , Райан покорил комнату своим энтузиазмом, энергией и позитивным подкреплением, которые постоянно бросали всем зрителям с достаточной смелостью, чтобы задать вопрос.

Этот семинар представил Symfony очень дружелюбно, представив его намного проще, чем я на самом деле считаю, со всем хаосом комплекта, ядра, приложения против app_dev и полдюжины файлов конфигурации.

Было немного странно видеть появление новой рекомендованной практики, которая рекомендует перемещать шаблоны в ресурсы папки приложения, а не помещать их в пакет, но при работе с пакетом основного приложения сомнительно, является ли это даже хорошей практикой есть связка вообще. Один должен быть основным, независимо от того, как приложение настроено в конце. Я обсуждал этот разрыв пакета с Райаном, и у него было несколько интересных вещей, чтобы сказать об этом — мы рассмотрим это подробно в следующем посте. Одна вещь, которая меня теряет, это то, что мне нужно изменить два основных файла просто для установки пакета — один, чтобы сообщить основному файлу маршрутизации, чтобы он считывал маршруты пакета из пакета, а другой — для активации пакета в файле AppKernel. Иногда вам даже нужно настроить дополнительные файлы конфигурации. Это похоже на слишком большое редактирование слишком большого количества файлов, чтобы заставить работать пакет. Видя, что консольные команды Symfony (см. День 3) автоматически регистрируются, для меня имеет смысл использовать аналогичный подход к автоматической загрузке маршрутов и автоматической активации пакета путем чтения его собственных файлов (таким образом, сохраняя все в инкапсуляции) — хотя, возможно, я смотреть на вещи слишком упрощенно, и это требует дополнительного обсуждения.

Мои надежды вызвали то, что Symfony держался подальше от весьма специфического и несколько загадочного синтаксиса. Например, в шаблонах Twig {% extends '::base.html.twig' %}{% extends 'base.html.twig' %}:: Это полезно для сообщества в целом, меньше путаницы вокруг. Райан сказал, что Symfony пытается удалить криптовалюту и из других мест (например, наличие символа @ на аргументах для служб в DI, может показаться странным и может использовать лучший синтаксис — @ это не то, что люди связывают с хорошей практикой ), что только поможет в принятии нового пользователя.

В целом, этот доклад был отличным началом всего лагеря, и гораздо больше, чем простые учебники по основам, вы можете найти в Интернете.

Создание REST API с помощью Symfony 2

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

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

Общее впечатление, которое я получил от выступления, заключалось в том, что приложение REST было простым для сборки с Symfony с добавлением 4-5 пакетов, но эти пакеты казались слишком большими и сложными для чего-то подобного.

Создание базовой CMS с CMF и RoutingAutoBundle

Даниэль Лич , который впечатляюще проехал сотни километров, чтобы добраться до конференции, и Виллем-Ян Зийдервельд представили создание базовой CMS с CMF Symfony и RoutingAutoBundle.

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

Как не пользователь Symfony, общее впечатление, которое я получил от этого семинара, было, опять же, то, что он был чрезмерно усложнен для чего-то столь же простого, как CMS, особенно базового (поэтому нет подробных пользовательских ролей, нет CDN, нет разметки) …). Мы загрузили много пакетов, отредактировали много файлов и в итоге получили простую форму, которая сохраняет контент в виде блога в базу данных. Для такого большого количества кода и ручного труда можно было бы использовать что-то такое же плохое, как WordPress, и в итоге получилось бы меньше наворотов — казалось, что мы написали слишком много кода для слишком малой возможности обновления и обслуживания в долгосрочной перспективе. Наиболее впечатляющей частью приложения был RoutingAutoBundle, который, как следует из его названия, автоматически определяет маршруты содержимого CMS и выдает выходные данные в соответствии с этим, если только не найден адекватный вывод, когда он возвращается к маршрутизатору Symfony по умолчанию.

Хотя эта техника маршрутизации была далека от научной фантастики (даже WordPress использует ее), было интересно узнать, что она существует в комплекте и может быть легко добавлена ​​в очередь маршрутизации по умолчанию в Symfony. Тем не менее, один недостаток этого семинара заключается в том, что мне показалось, что это не более чем прямое чтение из учебника CMF . Он также широко использовал PHPCR , что, на мой взгляд, было недостаточно объяснено, наряду с такими терминами, как CMF, JCR, Content Store и другими мета-терминами, которые, как я считаю, должны были стать предпосылкой теории.

День 2

Основы Behat

Еще один семинар Райана Уивера — введение в волшебный мир тестирования возможностей с помощью Behat . Мы пробежались по практическому примеру и создали достойный проект. Первый пример был аккуратно отделен от остальных, знакомя нас с терминологией функций и пошаговым тестированием, пока не будет показан проход. Затем мы внедрили BDD в веб-приложение с Mink, что открыло нам глаза на красоту автоматизации браузера. Излишне говорить, что Бехат сразу стал инструментом в моем арсенале — я знал об этом раньше, но никогда так конкретно.

Райан был своим обычным энергичным и позитивным человеком и включал в себя удобочитаемые и простые, приземленные слайды — все они были также в проекте, который нам дали через устройство Virtual Machine, чтобы мы могли перематывать по желанию, догонять, делать дополнительные кредитные задачи и многое другое. Также была продемонстрирована некоторая магия, например, создание снимка экрана веб-приложения в случае сбоя теста (см. Здесь ) или ожидание отображения всплывающих окон JS перед проверкой их существования. Наконец, как настоящий проект «с нуля с Behat», мы были представлены Sylius . Если вам интересно, как выглядит приложение, созданное с нуля с учетом поведенческого тестирования, проверьте его. Включенные функции ошеломляют.

Основы PHPSpec

После Райана Саша вышла на сцену. Также из KNP, первый разговор Саша был лучше, чем ожидалось для новичка, и он хорошо освещал PHPSpec . Его семинар познакомил слушателей с мистическим миром автоматического моделирования и генерации кода с помощью PHPSpec — инструмента тестирования спецификаций, который можно использовать как замену или дополнение к PHPUnit. Оптимальной настройкой представляется комбинация Behat и PHPSpec, оставляя PHPUnit необязательным.

Его слайды были менее независимыми (то есть вы не могли просмотреть их без руководства), и в итоге у нас не хватило времени, что было неудачно, но в целом на этом семинаре была представлена ​​весьма эзотерическая концепция в очень доступной форме и преобразовал многих членов аудитории в удобство тестирования с помощью PHPSpec. Если вам интересно, вот неплохой чит-лист .

День 3

MongoDB с PHP

Этот семинар , проводимый Дериком Ретансом , создателем Xdebug, сопровождающим драйвера MongoDB для PHP и коллегой по программе «Доктор Кто», позволил углубиться в тонкости использования MongoDB с PHP, создания цепочек запросов, решения общих проблем с фильтрацией результатов и многого другого. Мы создали образцы сценариев, сфальсифицировали процедуры импорта, а также упорядочили и сгруппировали типы пива по рейтингу и предпочтениям автора (Дерик попробовал колоссальные 999 сортов пива к концу своей поездки в Хорватию! — я был лично ответственен как минимум за пару).

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

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

Symfony Extra

Наконец, у нас была дополнительная игровая площадка Symfony, которую снова провел Райан. Эта часть была посвящена консоли — мы играли с индикаторами выполнения, циклами консоли, цветами, установкой пакетов через Composer и многим другим. Хотя семинар был не очень продвинутым, он был веселым и интересным, и напомнил мне о моем древнем проекте Autofight . Играть с PHP CLI всегда весело, а Autofight должен возродиться. Оставайтесь с нами, скоро на канале PHP может появиться что-то новое 🙂

Вывод

PHPSummerCamp был сокровищницей новых знаний. Даже не принимая во внимание удивительное гостеприимство ораторов, даже если они имели полное право побить меня камнями на месте, или фантастические развлекательные мероприятия, запланированные Netgen для этого мероприятия (от модных обедов с рыбой до поездок на лодке, дебатов StarWars и Мексиканская кантина разыгрывает), вся конференция была одной из лучших, на которых я был, если не лучшей.

Я встретил интересных людей, поговорил с некоторыми из людей, отвечающих за eZ Publish, об их дорожной карте и поддерживал контакты после этого, чтобы помочь в некоторой степени помочь с опытом разработчиков, и, надеюсь, некоторые люди заинтересовались проверкой нашего канала — мы все пытаемся объяснить влияние PHP, и, помогая друг другу, мы можем делать удивительные вещи.

С технической точки зрения реализация была не из этого мира — в каждой комнате для каждой беседы была не только профессиональная камера, следом за динамиком с выделенным оператором и подачей микрофонного входа непосредственно на запись, были также наняты профессиональные фотографы. чтобы захватить суть каждой комнаты в любое время. Звук был потрясающим, а феймики динамиков не давали треск и шум — все было кристально чистым. Место проведения было фантастическим, комнаты были высокотехнологичными, и — то, что вы не часто видите на конференциях — WiFi был просто потрясающим. В какой-то момент целой комнате из 30 с лишним человек пришлось выполнить команду «Установка Composer» в проекте Symfony, и хотя я видел, как Райан молча молился, чтобы это работало, не было необходимости в божественном вмешательстве — мы все успешно установили все. Ни одного сбоя.

В следующем году я первый в очереди за ранним билетом, и вы должны стоять прямо позади меня — вы не пожалеете об этом. Просто взгляните на некоторые фотографии . А пока позвольте мне посмотреть, смогу ли я достать некоторые записи разговоров и слайды и поделиться ими с вами. Я обновлю этот пост соответственно!

Примечание. Все фотографии, представленные выше, взяты со страницы eZSummerCamp в Facebook и защищены авторским правом.