data or code, but defines behaviors as method signatures. This gives you the ability to define the public api for a class, without providing the implementation details. CC BY-NC 4.0 Justin Yost 7
other coders meet some specific API, but you don't care about their implementation details of how they implement that same API. CC BY-NC 4.0 Justin Yost 8
code to other developers that they might want to modify or update, you provide the implementation and the api independently. CC BY-NC 4.0 Justin Yost 13
is for other developers. Abstract class provides an implementation that you typically don't want to ship to other developers but use internally. CC BY-NC 4.0 Justin Yost 18
be instantiated once. Once we have an instance of the class as long as we are in the same PHP request, we do not create multiple instances of this class with different properties. CC BY-NC 4.0 Justin Yost 23