Base classes and interfaces =========================== Object ------ Object is the base class for many other Yii2 classes. ### property feature #### Why To be able to make property `public` initially and then seamlessly make it `private` or `protected` by adding getter and setter method. That will *not* change API. Results in less repetitive code. Performance drop isn't significant. ### callbacks and expressions ### [[Object::newInstance|newInstance]] method This method is a powerful way to instantiate a class. Differences from `new`: - Calls class constructor (same the `new` operator); - Initializes the object properties using the name-value pairs given as the last parameter to this method; - Calls [[Initable::init|init]] if the class implements [[Initable]]. #### Why To support class dependencies and their lazy loading. ### [[Initable]] interface Developer will implement initable interface if running `init()` needed and will skip it if not. #### Why Indicates where `init()` will be called and where not. More explicit than it was in Yii 1. Component ---------