__construct() is the constructor, mainly called and executed when an instance is generated with the new keyword. (A constructor cannot return a value.) __destructor() is the destructor, called and executed when the object is destroyed. (It clears resources or writes log information when the object is destroyed.) __get(), __set() are accessor functions; whenever a class property is accessed or manipulated, the accessor functions are triggered. The oop philosophy discourages accessing class properties directly from outside the class, so using them avoids direct access to class properties. extends confirms that a subclass inherits from a superclass format: class Subclass extends Superclass{} final placed before a particular class means that class can no longer be inherited. If placed before a class method, it means that method cannot be “overridden” or redefined after inheritance. implements specifies the use of an interface
interface can declare an interface and set up interface methods separately
Error handling 

