It happens so unexpectedly: your project started off great at first with you developing at a rapid pace, but before you know it, you've come to a screeching halt. Adding the simplest of features takes forever. Unrelated pieces of code keep breaking without being touched. You've given up on tests because you simply don't have time and, frankly, they're all broke at this point anyway.

Your code doesn't have to be an unwieldy, soul crushing nightmare that revokes any joy of programming you once had.

Finding the best way to organize your code is one of the hardest parts of coding.

Determing the best way to architect your application is a very important step in development. Heading in the wrong direction can lead to a nightmare later, and make it nearly impossible to refactor the application to meet new demands, and can make properly testing the application a pain. While the methods outlined in this book aren't the only way to go about developing an application, they do provide a framework for developing applications that are:

Testable

Refactorable

Easy to work with

Easy to maintain

In this book, we cover the Clean Architecture, coined by Uncle Bob, and how to implement it in PHP, as well as the concepts of SOLID design, various design patterns, and a look at various architectures.