<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>The Strangebuzz PHP/Symfony blog.</title>
    <subtitle>Articles for the "php" tag.</subtitle>
    <updated>2026-03-12T15:43:35+01:00</updated>
    <author>
        <name>COil</name>
        <email>coil@strangebuzz.com</email>
    </author>
    <link href="https://www.strangebuzz.com/en/blog/tag/php.xml" rel="self" />
    <id>https://www.strangebuzz.com/en/blog/tag/php.xml</id>
    <icon>https://www.strangebuzz.com/img/strangebuzz_132.jpg?6.4.9</icon>
    <logo>https://www.strangebuzz.com/img/strangebuzz_1024.jpg?6.4.9</logo>
    <rights> © 2026 Strangebuzz</rights>
                            <entry>
            <title>MicroSymfony 8: ready for the LTS promise
</title>
            <link href="https://www.strangebuzz.com/en/blog/microsymfony-8-ready-for-the-lts-promise" />
            <id>https://www.strangebuzz.com/en/blog/microsymfony-8-ready-for-the-lts-promise</id>
            <published>2026-02-28T00:00:00+01:00</published>
            <updated>2026-02-28T00:00:00+01:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we have a look at the new Symfony 8 version of the MicroSymfony application template and how I start the LTS promise on this open-source project.
</summary>
        </entry>
                            <entry>
            <title>A better ADR pattern for your Symfony controllers</title>
            <link href="https://www.strangebuzz.com/en/blog/a-better-adr-pattern-for-your-symfony-controllers" />
            <id>https://www.strangebuzz.com/en/blog/a-better-adr-pattern-for-your-symfony-controllers</id>
            <published>2024-11-01T00:00:00+01:00</published>
            <updated>2024-11-01T00:00:00+01:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">This post shows various experiments and attempts around the ADR pattern applied to Symfony controllers.
</summary>
        </entry>
                            <entry>
            <title>Playing with the Symfony tagged iterator</title>
            <link href="https://www.strangebuzz.com/en/blog/playing-with-the-symfony-tagged-iterator" />
            <id>https://www.strangebuzz.com/en/blog/playing-with-the-symfony-tagged-iterator</id>
            <published>2024-08-27T00:00:00+02:00</published>
            <updated>2024-08-27T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we see how we can use the Symfony tagged iterator to gather services of the same type.  For sure, it is one of the most useful Symfony features.
</summary>
        </entry>
                            <entry>
            <title>Installing and using php-cs-fixer</title>
            <link href="https://www.strangebuzz.com/en/blog/installing-and-using-php-cs-fixer" />
            <id>https://www.strangebuzz.com/en/blog/installing-and-using-php-cs-fixer</id>
            <published>2024-01-15T00:00:00+01:00</published>
            <updated>2024-01-15T00:00:00+01:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we see different methods to install and use php-cs-fixer. We see that it&#039;s not as obvious as it seems.
</summary>
        </entry>
                            <entry>
            <title>Introducing the MicroSymfony application template</title>
            <link href="https://www.strangebuzz.com/en/blog/introducing-the-microsymfony-application-template" />
            <id>https://www.strangebuzz.com/en/blog/introducing-the-microsymfony-application-template</id>
            <published>2023-08-21T00:00:00+02:00</published>
            <updated>2023-08-21T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, I introduce the MicroSymfony application template, which results from several ideas I already discussed in a previous post:  &quot;Initializing your Symfony project with solid foundations&quot;.
</summary>
        </entry>
                            <entry>
            <title>Using Symfony forms with PHP typed properties
</title>
            <link href="https://www.strangebuzz.com/en/blog/using-symfony-forms-with-php-typed-properties" />
            <id>https://www.strangebuzz.com/en/blog/using-symfony-forms-with-php-typed-properties</id>
            <published>2023-05-20T00:00:00+02:00</published>
            <updated>2023-05-20T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we see how to use Symfony forms with PHP typed properties and non-nullable one. Let&#039;s see the problems that can occur and how to handle them.
</summary>
        </entry>
                            <entry>
            <title>Using PHP enumerations with your Symfony workflows</title>
            <link href="https://www.strangebuzz.com/en/blog/using-php-enumerations-with-your-symfony-workflows" />
            <id>https://www.strangebuzz.com/en/blog/using-php-enumerations-with-your-symfony-workflows</id>
            <published>2023-04-08T00:00:00+02:00</published>
            <updated>2023-04-08T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">This post shows how to use PHP enumerations with your Symfony workflows.  Let&#039;s take advantage of this new PHP feature to clean up and improve all the workflow-related code. 
</summary>
        </entry>
                            <entry>
            <title>Using PHP 8.1 enumerations in a Symfony project</title>
            <link href="https://www.strangebuzz.com/en/blog/using-php-8-1-enumerations-in-a-symfony-project" />
            <id>https://www.strangebuzz.com/en/blog/using-php-8-1-enumerations-in-a-symfony-project</id>
            <published>2022-09-03T00:00:00+02:00</published>
            <updated>2022-09-07T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">This post shows how to use PHP 8.1 enumerations in a Symfony project. We review the different steps to use this new PHP 8.1 useful feature in different parts of a Symfony application. 
</summary>
        </entry>
                            <entry>
            <title>Upgrading PHP with the ondrej/php repository on an Ubuntu server</title>
            <link href="https://www.strangebuzz.com/en/blog/upgrading-php-with-the-ondrej-php-repository-on-an-ubuntu-server" />
            <id>https://www.strangebuzz.com/en/blog/upgrading-php-with-the-ondrej-php-repository-on-an-ubuntu-server</id>
            <published>2022-07-25T00:00:00+02:00</published>
            <updated>2022-07-25T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">This post shows how to upgrade PHP with the ondrej/php repository on an Ubuntu server, step by step, to avoid forgetting something.
</summary>
        </entry>
                            <entry>
            <title>Initializing your Symfony project with solid foundations</title>
            <link href="https://www.strangebuzz.com/en/blog/initializing-your-symfony-project-with-solid-foundations" />
            <id>https://www.strangebuzz.com/en/blog/initializing-your-symfony-project-with-solid-foundations</id>
            <published>2022-06-11T00:00:00+02:00</published>
            <updated>2022-06-12T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">This post shows how to initialize a Symfony project with solid foundations. I give several bits of advice about this crucial step that determines how your project will evolve in the long run; will it stay maintainable and fun to work with? Or will it become the legacy project everyone tries to avoid?
</summary>
        </entry>
                            <entry>
            <title>Simple API mocking with the Symfony HTTP client</title>
            <link href="https://www.strangebuzz.com/en/blog/simple-api-mocking-with-the-symfony-http-client" />
            <id>https://www.strangebuzz.com/en/blog/simple-api-mocking-with-the-symfony-http-client</id>
            <published>2022-02-12T00:00:00+01:00</published>
            <updated>2022-02-12T00:00:00+01:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we see a simple solution to mock API calls with the Symfony HTTP client, declare a scoped HTTP client and test it with or without mock. 
</summary>
        </entry>
                            <entry>
            <title>Organizing your Symfony project tests</title>
            <link href="https://www.strangebuzz.com/en/blog/organizing-your-symfony-project-tests" />
            <id>https://www.strangebuzz.com/en/blog/organizing-your-symfony-project-tests</id>
            <published>2021-12-22T00:00:00+01:00</published>
            <updated>2021-12-22T00:00:00+01:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we see how to organize your Symfony project tests. We check all the available test types and create consistent and robust test suites.
</summary>
        </entry>
                            <entry>
            <title>Creating custom PHPStan rules for your Symfony project</title>
            <link href="https://www.strangebuzz.com/en/blog/creating-custom-phpstan-rules-for-your-symfony-project" />
            <id>https://www.strangebuzz.com/en/blog/creating-custom-phpstan-rules-for-your-symfony-project</id>
            <published>2021-10-28T00:00:00+02:00</published>
            <updated>2021-10-28T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we see how to create custom PHPStan rules for a Symfony project. We will check Symfony best practices but also more specific rules.
</summary>
        </entry>
                            <entry>
            <title>The PHP exceptions&#039; cheat sheet</title>
            <link href="https://www.strangebuzz.com/en/blog/the-php-exceptions-cheatsheet" />
            <id>https://www.strangebuzz.com/en/blog/the-php-exceptions-cheatsheet</id>
            <published>2021-10-02T00:00:00+02:00</published>
            <updated>2021-10-02T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">This post is different from what I use to do. It will be a reference, a &quot;cheat sheet&quot; mentioning all available exceptions with PHP.
</summary>
        </entry>
                            <entry>
            <title>End-to-end testing with Symfony and Panther</title>
            <link href="https://www.strangebuzz.com/en/blog/end-to-end-testing-with-symfony-and-panther" />
            <id>https://www.strangebuzz.com/en/blog/end-to-end-testing-with-symfony-and-panther</id>
            <published>2021-04-04T00:00:00+02:00</published>
            <updated>2021-04-04T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we will see how to create an end-to-end test scenario using Symfony, Panther and Vue.js with a concrete example.
</summary>
        </entry>
                            <entry>
            <title>Step by step debugging with Xdebug, Symfony and PHPStorm</title>
            <link href="https://www.strangebuzz.com/en/blog/step-by-step-debugging-with-xdebug-symfony-and-phpstorm" />
            <id>https://www.strangebuzz.com/en/blog/step-by-step-debugging-with-xdebug-symfony-and-phpstorm</id>
            <published>2020-06-21T00:00:00+02:00</published>
            <updated>2020-10-18T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we will see how to do step by step debugging with Xdebug, Symfony and PHPStorm. We will do a basic example where we will stop the execution of the Symfony code just before rendering a template to check the data passed to it.
</summary>
        </entry>
                            <entry>
            <title>On using the good old Symfony BaseController</title>
            <link href="https://www.strangebuzz.com/en/blog/on-using-the-good-old-symfony-basecontroller" />
            <id>https://www.strangebuzz.com/en/blog/on-using-the-good-old-symfony-basecontroller</id>
            <published>2019-12-31T00:00:00+01:00</published>
            <updated>2019-12-31T00:00:00+01:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we will see how to use the Symfony AbstractController that was introduced in Symfony 3.3/4.1. We will review what we used to do before and the evolutions that were done from symfony 1 to Symfony 5, especially how services were declared and used. Eventually, we will try to understand why this new &quot;Base controller&quot; was introduced.
</summary>
        </entry>
                            <entry>
            <title>The Symfony Request class interactive cheatsheet</title>
            <link href="https://www.strangebuzz.com/en/blog/the-symfony-request-class-interactive-cheatsheet" />
            <id>https://www.strangebuzz.com/en/blog/the-symfony-request-class-interactive-cheatsheet</id>
            <published>2019-01-29T00:00:00+01:00</published>
            <updated>2020-04-10T00:00:00+02:00</updated>
            <author>
                <name>COil</name>
                <email>coil@strangebuzz.com</email>
            </author>
            <summary type="html">In this post, we will review one of the most used and useful service (in fact it&#039;s a value object) provided by Symfony which is the &lt;a target=&quot;_blank&quot; href=&quot;https://api.symfony.com/master/Symfony/Component/HttpFoundation/Request.html&quot;&gt;Request service&lt;/a&gt; Is is part of the HttpFoundation component. Symfony is indeed a &lt;a target=&quot;_blank&quot; href=&quot;https://symfony.com/doc/current/introduction/http_fundamentals.html#requests-and-responses-in-http&quot;&gt;&quot;Request/Response&quot; framework&lt;/a&gt;. It will be &lt;b&gt;interactive&lt;/b&gt;, that means that you will be able to change the URL used in the examples and provide your one so you can test with different parameters. It will, therefore, save you manual &lt;code&gt;dump()&lt;/code&gt; calls. 😉
</summary>
        </entry>
    </feed>
