Обновление до PHP 7 на CentOS 7

Версия PHP 7, выпущенная 3 декабря 2015 года, обещает значительное увеличение скорости работы по сравнению с предыдущими версиями этого языка, а также новые функции (например, подсказки скалярного типа). В этом руководстве объясняется, как быстро обновить PHP 5.x (любую версию), работающую на веб-сервере Apache или Nginx, до PHP 7 при помощи пакетов, предоставляемых сообществом разработчиков.

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

Обновление до PHP 7 на Ubuntu 14.04

  • PHP
  • 1 год назад

Версия PHP 7, выпущенная 3 декабря 2015 года, обещает значительное увеличение скорости работы по сравнению с предыдущими версиями этого языка, а также новые функции (например, подсказки скалярного типа). В этом руководстве объясняется, как быстро обновить PHP 5.x (любую версию), работающую на веб-сервере Apache или Nginx, до PHP 7

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

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

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

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

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

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

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

События жизненного цикла в Doctrine 2

  • PHP
  • 1 год назад

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

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

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

Обучающее руководство по модульному тестированию. Часть III: Тестирование защищенных/частных методов, отчеты о покрытии и индекс CRAP

  • PHP
  • 1 год назад

В третьей части моего обучающего руководства по тестированию я объясню, что такое покрытие кода и почему 100%-е покрытие кода не является обязательной целью.

Но сначала поговорим о тестировании ваших частных/защищенных методов!

Если вы загляните во вторую часть этого руководства, то заметите, что мы инстанцируем класс, который хотим протестировать, через обычный запрос new. У вас может возникнуть вопрос о том, как тестровать защищенные или приватные методы, если к ним невозможно получить доступ напрямую через инстанцированный объект ($url->someProtectedMethod()).

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

Руководство по модульному тестированию. Часть II: Утверждения, написание настоящего теста и аннотация @dataProvider

  • PHP
  • 1 год назад

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

Но этот тест познакомил вас с самым базовым утверждением PHPUnit - assertTrue().

Википедия дает следующее определение утверждения:

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

Развертывание Symfony приложения на Ubuntu 14

  • PHP
  • 1 год назад

В этом уроке будет рассказано, как вручную развертывать базовое приложение Symfony на сервере Ubuntu 14.04. Мы рассмотрим, как правильно конфигурировать сервер, учитывая при этом меры безопасности и эффективности, чтобы получить приложение, готовое для производства. Если вам нужен вводный урок по Symfony, вы можете почитать о том, как установить и запустить Symfony на Ubuntu 14.04.

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

Установка и использование Docker Compose на Ubuntu 14.04

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

Сообщество Docker придумало популярный инструмент под названием Fig, который позволил использовать один файл YAML для управления всеми контейнерами и конфигурациями Docker. Инструмент стал насколько популярен, что команда Docker наконец решила создать свою собственную версию, основанную на Fig. Они назвали свою новую разработку Docker Compose. Если вкратце, то он упрощает процессы управления Docker-контейнерами (например, запуск, закрытие и настройка связей и объемов внутри контейнеров).

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