PHP new self和new static的区别
abstractclassDomainObject{publicstaticfunctioncreate(){returnnewself();}}classUserextendsDomainObject{}classDocumentextendsDomainObject{}var_dump(Document::create());
结果:Fatal error: Cannot instantiate abstract class DomainObject in......
self对当前类的静态引用,取决于定义当前方法所在的类。也就是说,这里的self被解析为定义create()的DomainObject,而不是解析为调用self的Document类。
abstractclassDomainObject{publicstaticfunctioncreate(){returnnewstatic();//延迟静态绑定}}classUserextendsDomainObject{}classDocumentextendsDomainObject{}var_dump(Document::create());
结果:
class Document#1 (0) {
}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。