位置: 编程技术 - 正文
推荐整理分享PHP中new static()与new self()的比较(php static变量),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:php new class,php new对象,php self static区别,php中static的用法,php throw new,php中static的用法,php throw new,php中static的用法,内容如对您有帮助,希望把文章链接给更多的朋友!
今天在coding的时候,发现了 new static(),觉得实例化的地方不是应该是 new self()吗?查询了一下才知道两者的区别:
1)在有子类集成的时候,两者的表现不一样
2)php 5.2及以下的版本不支持 new static()的语法
简单通俗的来说, self就是写在哪个类里面, 实际调用的就是这个类.所谓的后期静态绑定, static代表使用的这个类, 就是你在父类里写的static,
然后通过子类直接/间接用到了这个static, 这个static指的就是这个子类, 所以说static和$this很像, 但是static可以用于静态方法和属性等.
具体解释如下:
self - 就是这个类,是代码段里面的这个类。
static - PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类。
还是看看老外的专业解释吧:
self refers to the same class whose method the new operation takes place in.
static in PHP 5.3's late static bindings refers to whatever class in the hierarchy which you call the method on.
In the following example, B inherits both methods from A. self is bound to A because it's defined in A's implementation of the first method, whereas static is bound to the called class (also see get_called_class() ).
上代码:
但是如果想让 子类使用 get_class时,返回的也是 当前子类的名称('wangbaoqiang'),该怎么做呢。
以上所述是小编给大家介绍的PHP中new static()与new self()的比较,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!
PHP控制前台弹出对话框的实现方法 应用场景:微信授权登录过程中,需要用户确认,故衍生此需求;相应的逻辑不放在前端的原因是,此部分逻辑属于偏功能业务,所以放在后端,方便
PHP中ID设置自增后不连续的原因分析及解决办法 PHP中ID设置自增后不连续的原因分析如下所述:altertabletablenamedropcolumnid;altertabletablenameaddidmediumint(8)notnullprimarykeyauto_incrementfirst;每次删除把这两行家伙加
简单PHP会话(session)说明介绍 现在程序员愈发的不容易了,想要精通,必然要寻本溯源,这其实与目前泛滥的愈发高级的语言以及众多的框架刚好相反,因为它们在尽可能的掩盖本
标签: php static变量
本文链接地址:https://www.jiuchutong.com/biancheng/301650.html 转载请保留说明!友情链接: 武汉网站建设