最近有视频评论被问到一个小问题:选择静态而不是自我,有什么特殊考虑吗?或者我们可以这样改变问题:
PHP有哪些新的静态和新的自我?
事实上,这个例子应该很清楚:
父类{ public static function getSelf(){ return new self();} public static函数getStatic(){ return new static();}}class Son扩展了父辈{ } echo get _ class(son: getself());//父回声get _ class(Son : GetStatic());//Sonecho get_class(父级: getself());//父回声get_class(父: getstatic());//爸爸,注意这一行get _ class(son: getstatic());返回子类,可以总结如下:
新自我
1.self返回new self中关键字new的类,如下面的例子:
公共静态函数getSelf(){ return new self();//new关键字在父中}始终返回父。
新静态
2.static在上面的基础上更聪明一点:static会返回执行new static()的类,比如执行get _ class时son返回Son(son:3360 getstatic()),执行get _ class时Son、父返回父(父3360: getstatic())
在没有继承的情况下,可以认为新的自我和新的静态返回相同的结果。
Tips:可以用一个好的IDE直接看注释。例如,PhpStorm:
快乐黑客