PHP Classes, Interfaces, & Traits
June 15, 2020
Below are some general characteristics of classes, interfaces, and traits. The lists are incomplete and not detailed but capture some important features to understand them.
CLASSES
Can:
- CAN have a constructor
- CAN have zero or more data members and/or methods
- CAN be used to instantiate objects
- CAN only extend a maximum of one Class (abstract or concrete)
- CAN implement many Interfaces
- CAN use many Traits
Cannot:
- CANNOT have abstract methods
- CANNOT have nested Classes
TRAITS
Can:
- CAN have a constructor
- CAN have data fields
- CAN have methods
- CAN use many Traits
Cannot:
- CANNOT extend Classes or implement Interfaces
- CANNOT have abstract methods
- CANNOT be used to instantiate objects
INTERFACES
Can:
- CAN extend many Interfaces
- CAN have only function definitions
- CAN only be implemented by an abstract or concrete Class
Cannot:
- CANNOT have a constructor
- CANNOT have data members
- CANNOT have abstract methods
- CANNOT be used to instantiate objects
- CANNOT extend Classes or use Traits