Programming to Interface, Not to Implementation: A PHP Developer's Journey