As a certified PHP and Symfony consultant with over 10 years of professional experience, I can help you improve the quality, maintainability and performance of your project.
As software applications increase in size, so does their complexity. To help you create software that remains maintainable as it grows, I can help you design a software architecture that fits your needs while avoiding the pitfalls of Big Design Up Front which come with the traditional waterfall model.
I can help you decouple the domain logic in your PHP or Symfony applications from the framework and infrastructure code using architectural patterns such as hexagonal architecture, and I can train your engineers to write maintainable object-oriented code by following the SOLID principles and applying common design patterns.
Using open-source libraries and frameworks (such as Symfony) from the PHP ecosystem allows you to reuse existing solutions and focus your engineering efforts on the challenges that are unique to your business. Having extensive experience working with Composer, the dependency manager for PHP, I can help you introduce Composer to your development process, publish your own open-source packages to Packagist, or set up a private repository for consumption of internal packages within your organization.
Being a dynamic programming language, PHP lacks a compilation step where it checks for type errors and other potential bugs. I can help you catch bugs before they get deployed to production by implementing free open-source PHP static analysis tools such as PHPStan and Psalm.
On top of that, I can help you improve the internal code quality of your software by implementing open-source coding standards tools such as PHP CodeSniffer, PHP CS Fixer, and PHP Mess Detector. This improves the readability of the code for your engineers, which in turn will reduce the risk of bugs being introduced in the code.
I have extensive experience with designing and implementing automated tests in PHP using popular open-source testing tools such as PHPUnit and Behat. I can help you to implement unit, integration, acceptance, and end-to-end testing, applying concepts such as the test pyramid and test-driven development.