About:

Tomas Votruba is the author of the website tomasvotruba.com, which focuses on topics related to change management, software development, and safe and fast adaptation to new technologies and methodologies.

Website:

Outgoing Links:

Subscribe to RSS:
A curated list of five influential books from 2025, reflecting on personal growth and the timeless wisdom found in literature.
The text discusses the options of forking, creating a pull request, or patching a file locally in the /vendor directory when using an open-source package. It then delves into the default behavior of the Laravel Container and how t...
The text discusses the challenges of maintaining Symfony Workflows configuration and proposes a solution using PHP config. It highlights the complexity of the current configuration and the need for a more intuitive and error-proof...
The post discusses the process of upgrading the Sensio @Security annotation to Symfony #[IsGranted()] attribute. It provides a detailed evolution timeline of the @Security annotation, and outlines the steps to upgrade from Sensio ...
The text discusses creating custom PHPStan rules to make the process more fun and tailored to unique projects. It provides a step-by-step guide on how to create a custom PHPStan rule and emphasizes the importance of bringing value...
The article discusses the advantages of abstract syntax tree (AST) over Generative Pre-trained Transformers (GPTs) in the context of PHP. It highlights the deterministic nature, scalability, and reusability of AST, and the innovat...
The text discusses the importance of using custom PHPStan rules to improve Symfony projects. It emphasizes the need for rules to get PHP projects into a future-proof state, and highlights specific rules for clear dependency inject...
The text discusses the importance of container smoke tests in Symfony projects, which are simple tests that cover a large portion of the Symfony framework layer. It explains the benefits of these tests, how to create them, and wha...
The author shares 5 books he enjoyed reading in 2024, explaining how each book impacted him personally and recommending them to the readers.
The text discusses the practical steps taken to upgrade Doctrine Fixtures. It covers flipping YAML fixtures to PHP, making PHP fixtures useful, using native PHP, enabling PHPStan, teaching Faker to autoconfigure, and sharing Doctr...
The text discusses the @required annotation in Symfony 3 and how it should be used correctly. It highlights 3 temptations to avoid when using @required and provides 3 ways to use it right. It also mentions the use of PHPStan to ch...
The author discusses the issue of unused Behat definitions in feature file scenarios and the lack of Behat static analysis report out of the box. They propose a solution to run static analysis to identify and remove unused definit...
The text discusses the benefits of using final classes in PHP, particularly in relation to Rector and PHPStan. It explains how final classes can improve code quality, make upgrades easier, and enhance the functionality of these to...
The text discusses the process of upgrading Symfony from version 2.8 to 7.2, emphasizing the benefits of using modern features and the potential challenges. It provides a detailed guide on the steps to follow for a successful upgr...
The text discusses the anti-pattern of misusing repositories in legacy projects and the process of refactoring the ODM service locator to independent services. It emphasizes the advantages of strict type coverage and the importanc...
The text discusses the challenges of upgrading Doctrine Fixtures, requiring coordination of four different package groups on Github. It outlines the upgrade plan, the preparation steps, and the execution steps. It also reflects on...
The text discusses 5 ways to extract value from overmocked tests, focusing on making tests more valuable, accessible to upgrade and read, and avoiding false types. It provides examples and rules of thumb for improving tests, such ...
The withConsecutive() method in PHPUnit 9 was deprecated and removed in PHPUnit 10, sparking many questions. There is no 1:1 replacement, but it can be combined with willReturn*() methods. The effort to gather this information is ...
The text discusses the long-term benefits of using PHP for business, emphasizing its stability, pro-growth competition, healthy ecosystem, self-reflecting technology, and open-source adaptation to the future.
The text discusses the issue of PHP tools requiring specific PHP versions and dependencies, leading to abandoned packages and frustrations for developers. It suggests a solution of separating development and delivery to make tools...
The text discusses 2 techniques to minimize Symfony service config lines to under 5. The first technique involves removing service names and using unique types, while the second technique involves using the #[Autowire] attribute t...
The author shares a solution to a problem encountered while using Livewire 3 for a filter page on the Rector website. The code highlighter was turning off on component refresh, and the author explains how to reload the highlighter...
The text discusses the importance of class constant visibility in PHP, particularly in the context of upgrading legacy projects. It explains the downsides of having all constants public by default and provides a rule of thumb for ...
The text discusses the Swiss Knife CLI package for PHP tooling, which offers 9 commands grouped in 3 feature categories to improve PHP projects. It focuses on PSR-4 autoloading, spotting errors in CI, and one-time commands to impr...