<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/vendor/feed/atom.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
                        <id>https://phptoptens.com/authors/tomas-votruba/feed</id>
                                <link href="https://phptoptens.com/authors/tomas-votruba/feed" rel="self"></link>
                                <title><![CDATA[Artisan Weekly — Author Feed]]></title>
                    
                                <subtitle>Featured links for a given author across Artisan Weekly editions.</subtitle>
                                                    <updated>2026-10-22T15:52:57+01:00</updated>
                        <entry>
            <title><![CDATA[Patch or Perish]]></title>
            <link rel="alternate" href="https://tomasvotruba.com/patch-or-perish/" />
            <id>https://tomasvotruba.com/patch-or-perish/</id>
            <author>
                <name><![CDATA[Tomas Votruba]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[An interactive tool that analyses your PHP project's dependency versions to reveal how many packages are end-of-life and no longer receiving security patches, helping developers understand their application's security exposure.]]>
            </summary>
                                    <updated>2026-10-22T15:52:57+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Rust/Go Leverage in PHP]]></title>
            <link rel="alternate" href="https://tomasvotruba.com/blog/rust-go-leverage-in-php" />
            <id>https://tomasvotruba.com/blog/rust-go-leverage-in-php</id>
            <author>
                <name><![CDATA[Tomas Votruba]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Explore how Rust and Go are influencing the PHP ecosystem through faster static analysers like Mago, and discover how PHP developers can leverage these languages without needing deep expertise through agentic development.]]>
            </summary>
                                    <updated>2026-10-15T17:24:52+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[How I use Agents to Extract Hidden Feedback from Github and Improved Rector]]></title>
            <link rel="alternate" href="https://tomasvotruba.com/blog/how-I-use-agents-to-extract-hidden-feedback-from-github-and-improved-rector" />
            <id>https://tomasvotruba.com/blog/how-I-use-agents-to-extract-hidden-feedback-from-github-and-improved-rector</id>
            <author>
                <name><![CDATA[Tomas Votruba]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Tomas Votruba explains how he's used AI agents to automatically identify and fix bugs in Rector by analysing skipped rules in configuration files. The article details his practical approach to leveraging AI for extracting hidden feedback from open-source projects and improving code quality tooling.]]>
            </summary>
                                    <updated>2026-07-16T19:00:32+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[PHPStan rules to measure cognitive complexity of your classes and methods]]></title>
            <link rel="alternate" href="https://github.com/TomasVotruba/cognitive-complexity" />
            <id>https://github.com/TomasVotruba/cognitive-complexity</id>
            <author>
                <name><![CDATA[Tomas Votruba]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[A PHPStan extension that measures cognitive complexity in your PHP code, helping you identify difficult-to-understand functions and class dependency trees. It provides configurable rules to keep your code maintainable by flagging overly complex classes and methods.]]>
            </summary>
                                    <updated>2026-06-11T06:37:32+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Introducing CTOR: Prefer Constructor over Always-Called Setters]]></title>
            <link rel="alternate" href="https://tomasvotruba.com/blog/introducing-ctor-prefer-constructor-over-always-called-setters" />
            <id>https://tomasvotruba.com/blog/introducing-ctor-prefer-constructor-over-always-called-setters</id>
            <author>
                <name><![CDATA[Tomas Votruba]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Tomas Votruba introduces CTOR, a PHPStan extension that detects setter methods always called after object instantiation and suggests moving them into the constructor instead. The tool helps Laravel developers prevent half-valid objects by enforcing proper dependency injection through constructors rather than relying on mandatory setter chains.]]>
            </summary>
                                    <updated>2026-05-28T16:22:25+01:00</updated>
        </entry>
            <entry>
            <title><![CDATA[Custom PHPStan Rules to Improve Every Symfony Project]]></title>
            <link rel="alternate" href="https://t.ly/GrkaG" />
            <id>https://t.ly/GrkaG</id>
            <author>
                <name><![CDATA[Tomas Votruba]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[Custom PHPStan Rules to Improve Every Symfony Project]]>
            </summary>
                                    <updated>2026-01-15T07:46:33+00:00</updated>
        </entry>
            <entry>
            <title><![CDATA[The Patch for Laravel Container]]></title>
            <link rel="alternate" href="https://t.ly/JWTjB" />
            <id>https://t.ly/JWTjB</id>
            <author>
                <name><![CDATA[Tomas Votruba]]></name>
                <email><![CDATA[hello@example.com]]></email>

            </author>
            <summary type="html">
                <![CDATA[The Patch for Laravel Container]]>
            </summary>
                                    <updated>2026-01-13T22:57:38+00:00</updated>
        </entry>
    </feed>
