Clean Code SOLID principles applied to PHP

clean-code-php is an excellent set of examples for the SOLID principles as applied to PHP programming:

Software engineering principles, from Robert C. Martin’s book Clean Code, adapted for PHP. This is not a style guide. It’s a guide to producing readable, reusable, and refactorable software in PHP.

Not every principle herein has to be strictly followed, and even fewer will be universally agreed upon. These are guidelines and nothing more, but they are ones codified over many years of collective experience by the authors of Clean Code.

Inspired from clean-code-javascript

TNTSearch – a fully featured full text search engine written in PHP

TNTSearch – a fully featured full text search engine written in PHP.  Here’s also a blog post that shows how to use it with the Laravel framework.  Which shouldn’t be too difficult to adjust for any other PHP framework.

Integrated Package for better testing in CakePHP

Viraj Khatavkar wrote this blog post showing how to use Integrated Package for better testing in CakePHP.  Testing in general is not a simple subject, so anything to assist with it is very very welcome.

I’m sure we’ll be trying it at work in the next week or two.

Using php-fpm as a simple built-in async queue

Here’s an interesting solution for a poor man’s asynchronous queue using PHP-FPM:

PHP-FPM already acts as a queue for Nginx/Apache FastCGI clients. While your web-request is running you can just send another FastCGI request to the same PHP-FPM socket asynchronously and non-blocking. This request is immediately executed in another php-fpm process in parallel and you could wait for it to complete or just fire and forget.

Given the experimental nature of this approach, you probably won’t be running this in production.  And with many developers switching to the built-in PHP web server for the local development, this doesn’t work for those environments other.

But it makes me think what else can be used as a queuing mechanism.  After all, there are plenty of systems that rely on this already – email servers, printer spoolers, web and proxy servers, and probably more.

CakePHP Events System

Events are a great way to separate the business logic of your application and make things simpler and, often, faster.  CakePHP framework introduced an events system in version 2.1, and since then it got much better.  The official documentation covers current implementation pretty well.  But in this post I wanted to link to a few articles that provide more of a historical perspective.

First, goes this blog post by Martin Bean from back in 2013.  It shows how things were initially.  Even with all the improvements in version 3, the first implementation was still pretty useful.

Second, comes this review of the CakePHP events system (still in version 2), and some profiling of this new functionality.  These guys looked at all the details and eventually suggested some improvements.

Their effort didn’t go unnoticed.  Mark Story, one of the lead developers of CakePHP framework, wrote this blog post, explaining the upcoming (at the time) changes to the events system in CakePHP version 3.

As a result CakePHP 3 event system is a much simpler and cleaner implementation.  Have a look at this guide for a quick introduction.

I’m sure this is not the end of the road, as no software is ever perfect.  But it’s a good place to be.