Behat tutorial part 2: testing Symfony 6 application

In part 1 we saw how to write a behat test. It's now time to use this knowledge to test our real-world application! Please notice that this tutorial will work with most versions of Symfony since behat is compatible with Symfony 4, 5, and 6. The project we…

Behat tutorial part 1: the basics

TL;DR: we are going to functionally test the ls command, the code is here. Behat is a testing tool for PHP. But before understanding what behat is used for, you need to understand that different types of testing exist. ⚠️ I will try to explain here the differences between the…

Creating a PHP archive (phar)

Java has jar files. PHP has phar files. Those files are PHP projects packaged. You may know them through usages like composer or PHPUnit. But phar files were designed by taking into consideration the nature of PHP: the web. Therefore, we're going to try to show how to…

Test emails with Symfony

Symfony 4 brought us the awesome Mailer Component. Something that you may not know about it, is how to test if an email has been sent. This is something not well known, but actually easy! Let's see together how to do it with PHPUnit, but also with Behat…

How to get the real PHP memory usage on macOS

PHP provides the function memory_get_usage(), this is very helpful whenever you find your code using a lot of RAM. But this method has a significant limitation: it only counts memory used by your code directly and nothing out of the zend engine. The problem is that you may…

Simple strategy pattern with Symfony

The strategy pattern is a very easy implementation with the DIC from Symfony. Here is how: First let's define an interface for our strategies: namespace App\Domain\CustomProcess; interface MyStrategyInterface { public function execute(Whatever $input); public function supports(Whatever $input); } Then, we will add the tag app.my_…

Easy locks with Symfony

The Symfony documentation describes quite well how locks actually work, that's why this article will not describe why you should use a lock and how it actually works. But it says nothing about the short time installation it requires to set it up and run! Let's…