PHP 7.1 — 9 новых функций, о которых вам стоит знать

Наконец, в свет вышла PHP 7.1, новая минорная версия PHP, которая включает в себя ряд новых функций, изменений и исправления ошибок. В настоящей статье мы рассмотрим некоторые новые замечательные функции PHP 7.1, а именно: Итерируемый псевдотип Замыкания через функции обратного вызова Синтаксис с квадратными скобками для списка () Поддержка ключей […]

Как создать собственный контейнер внедрения зависимостей на PHP

На запрос «контейнер внедрения зависимостей» packagist.org выдает более 95 страниц результатов. Так что можно с уверенностью утверждать, что это «колесо» уже изобретено. Но ни один шеф-повар не учится готовить только по готовым блюдам. Точно так же, программист не учится только по «готовому коду».

Имитирующие методы и переопределение конструкторов

В предыдущем уроке по PHPUnit вы познакомились с такими эффективными инструментами, как имитирующие объекты и методы-заглушки. Эти понятия являются залогом успешного модульного тестирования, и как только они «улягутся» у вас в голове, вы начнете понимать, насколько полезным и простым может быть тестирование. Хочу пояснить еще одну вещь: по сути, создание […]

Имитирующие объекты, методы-заглушки и внедрение зависимости

В предыдущих статьях я показал вам, как писать базовые тесты для базовых методов. Теперь вы можете пользоваться аннотацией @dataProvider, создавать отчеты о покрытии, и знаете, как пользоваться отдельными утверждениями. До этого мы писали тесты для простых методов. Вызов внутреннего метода в рамках одного и того же класса, вставка блока if, но […]

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

Общим требованием при создании приложений является понимание того, что в результате какого-либо события в системе активируются определенные действия. Это могло бы быть так же просто, как обновление поля updated_at каждый раз при изменении записи в базе данных, или отправка электронного письма каждый раз, когда в вашем приложении регистрируется новый пользователь. Doctrine 2 […]

Тестирование защищенных/частных методов, отчеты о покрытии и индекс CRAP

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

Утверждения, написание настоящего теста и аннотация @dataProvider

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

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

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

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

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

Как создать простую, но эффективную систему очереди сообщений

На протяжении последних нескольких месяцев перед нами стояла сложная задача, заключавшаяся в выполнении множества микро-услуг для тысяч запросов наиболее эффективным способом. Нашей первой мыслью было использовать Очередь (что намного лучше, чем создавать таблицу x-SQL со своими собственными статусами, датами создания, приоритетами и т.д.) — и оказались правы. Однако существует очень […]