Example code 1
Abstract classparent{}classMansextendsparent{ Public Static functionCreate () {return NewMan (); } }classWomanextendsparent{ Public Static functionCreate () {return NewWoman (); } }
The sample code has a parent parents class that also contains the man and woman two subclasses, and in that two class contains a static method create () that creates itself. Although this code works well, each subclass must write the static method of Create. It is annoying to write a lot of repetitive code, if you do not want to write this similar code for all subclasses of parent. If we write the Create method to the parent class.
Example code 2
Abstract class parent{ publicstaticfunction Create () { return New Static (); } } class extends parent{ }classextends parent{ }
Example code 2 uses PHP's attributes to delay static binding, which is similar to self, but it refers to the class being called instead of the containing class, man::create () generates a man object, not a parent object.
PHP delay statically binding static keyword