After a week of holidays, here I am again, back to coding and learning. I really needed a rest but, on the other hand, after a couple of days, I was missing my computer to bits. ¡Already the third letter of SOLID! Let's get into it. This complex to understand principle can be described as follows: "If s is a subtype of t , then we should be able to substitute objects of type t by objects of type s without altering the properties of the program." In other words, it is possible to substitute a given object with an object of a sub-class and expect it to react the same way and fulfill its contract . But as usual, it is easier to understand if we have a look at a code snippet. Imagine our app currently sends all of our Notifications through Plain Text Email through SMTP. Our code would look something like this: <?php $emailMessage = new EmailMessage( 'Laura' , 'New Blog Post' , 'Hi Laura, ...' ); $smtp = new SMTPTransport ( 'sm...