最近对一个视频的评论被问到一个小问题:是否有选择静态而非自我的特殊考虑或者我们可以改变这样的问题:

PHP的新静态和新的自我是什么

事实上,这是一个明显的例子。


类的父亲{

公共静态函数(){私
返回新的自我();
}

公共静态函数获取静态(){
返回新静态();
}
}

子类扩展父{ }

回声get_class(儿子::私)(); / /父亲
回声get_class(儿子::获取静态)(); / /儿子
回声get_class(父亲::私)(); / /父亲
回声get_class(父亲::获取静态)(); / /父亲


注意这条线get_class(儿子::获取静态());返回子类,可概括如下:

新的自我

在新的关键词在新自班1.self回报,如这里的例子:


公共静态函数(){私
返回新(自);在这里返回新父关键字
}


永远回到父亲身边。

新的静态

2.static是聪明的基础之上:静态将执行新的静态类(),例如,儿子执行get_class(儿子::获取静态()),它返回的儿子,父亲执行get_class(父亲:*()),并返回结果。

在没有继承的情况下,可以考虑新的自我和新的静态返回相同的结果。

提示:可以使用一个很好的IDE来看看直接说明。例如,PhpStorm:



快乐的黑客