You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
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
|
|
|
|
---------
|
|
|
|
|