- Capturing remote code coverage in E2E tests with PHPUnit
A couple of years ago I wrote about how to capture code coverage in API tests. In that article I explained the implications of code coverage collection when the code under test does not run in the same process as the test itself. However, the process explained there was a bit hacky and limited to AP…
category Archive — "php"
— 2024 —
— 2022 —
- Capturing remote code coverage in API tests with PHPUnit
You can find an improved version of what's described here in Capturing remote code coverage in E2E tests with PHPUnit Capturing code coverage for a test suite is a very useful way to know which parts of your source code are actually getting executed by tests. This is useful not only to know if you…
— 2020 —
- Considerations when working with async PHP runtimes like swoole
Asynchronous and non-blocking runtimes are pretty usual in many programming languages, as well as long-lived web apps that stay in memory and are capable of dispatching multiple HTTP requests without having to be fully bootstrapped every time. This has not been traditionally the case with PHP apps. …
— 2019 —
- How to properly handle a doctrine entity manager on an expressive application served with swoole
Some of you probably know that I have a pet project in which I like to work from time to time. This project is a self-hosted URL shortener called Shlink. Shlink is built using expressive as the base framework for the HTTP-dispatching task. A while ago, an expressive module was released to officially…
— 2018 —
- Delay constructor execution by using ServiceManager lazy services
A couple years ago I wrote a post about how to improve PHP applications performance by using zend-servicemanager lazy services. In that article I explained how the ServiceManager takes advantage of the proxy design pattern to delay the creation of services, when they are marked as lazy. That can imp…
- Demonstrating the interoperability and decoupling of Zend Expressive
I have written a lot of posts about Zend Framework in general and Zend Expressive in particular, but I have noticed that I have never talked about one of the things that, from my point of view, makes Expressive so game-changing, Interoperability. Some context In the past, PHP frameworks used to be v…
- Mutation testing with infection in big PHP projects
There's no doubt that having tests in a project allows you to find potential bugs earlier and more easily. Lots of OSS projects require a minimum code coverage in order to accept new pull requests from contributors, and proprietary projects also tend to have some sort of continuous integration workf…
— 2017 —
- AcMailer 7.0, the most important release in a long time
A couple of hours ago I have released the seventh major version of a module I created more than 4 years ago. It was born as an abstraction to send emails in Zend Framework 2 applications, but trying to make the process simpler than directly working with the lower-level zend/mail component. I initia…
- Properly passing data from outer layers of a PHP application to the use case layer
Update 2017-10-18: After reading this article, I recommend you to read the comment from Rasmus Schultz. It is very clarifying, and might make you think twice if this is really the best approach. Lately, I've been digging a lot in different ways of improving software architecture. Mainly subjects l…
- Reusing factories in Zend ServiceManager
I think it is doubtless that modern PHP embraces SOLID principles, and therefore, dependency injection. That's why every modern PHP application needs a dependency injection container to deal with it. There are several options out there, depending on the way you like to work. Every container has a sl…