Polymorphism with a PHP interface
A PHP interface is a simpler version of a PHP abstract class. An interface cannot have properties like a normal class can, and it can only contain publicly visible functions. Each method in an interface must be implemented by any class that uses the interface but without the need to add the abstract
keyword. Therefore, we must be very careful when declaring functions to an interface. It’s very easy to end up having an interface with too many functions that it doesn’t make sense for each implementing class to use. This is where the Interface Segregation Principle comes in to help, and this will be discussed more in Chapter 8, Using TDD with SOLID Principles.
Imagine that you need a program to return results in different formats, and you’d also like to be able to isolate the logic and dependencies to come up with the desired results. You can use an interface to set a contract that will be followed by your objects. For example...