Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
While primitives have fixed data structures, objects in comparison can seem loose, in that they can have any number of properties. To give structure to an object, I can use a class. A class is a blueprint that defines the structure of an object. Objects are created in the exact same way using these class blueprints. This way, I know that when a class is used as a blueprint for an object, the structure of each object won't be different. Each class modularizes program functionality by separating features with as little overlap as possible.
Classes have attributes, which are the data structure for properties. There is a tiny technical difference between attributes and properties, but it's so minor that even the official PHP documentation uses the terms kind of interchangeably, and prefers properties. So, we'll also use properties. Classes also define behaviors, which are implemented as methods. A method is a subroutine that works on an object. I like to think of methods like a function that's contained within a class. Objects are instances of a class, meaning each occurrence of an object of a particular class has all the properties and behaviors of that class.
The individual properties will be the same, but the value stored in the properties may differ. As an example, I'm going to define a class for an address. The class address has several properties like the city, and subdivision, and has the behavior of being able to look up a postal code given the values of those properties. Therefore, every instance of class address will have those properties and behavior. I'm going to apply this address class to the real world using two instances. The first instance can represent Phoenix, Arizona, and the second instance can represent Columbus, Ohio.
As each object is an instance of class address, I know that they should have at least a city and subdivision. And, I know that it has the behavior of postal code lookup. I can't anticipate the contents of the object properties, but I can anticipate their format, and how to access them. This seems like a lot of work. I know that I can write code that works perfectly fine without defining classes with properties and behaviors. So, why bother using object-oriented programming?
Get unlimited access to all courses for just $25/month.Become a member