继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

PHP new self和new static的区别

这个名字没人起
关注TA
已关注
手记 271
粉丝 19
获赞 92


abstract class DomainObject{        public static function create(){                return new self();        }} class User extends DomainObject{}class Document extends DomainObject{} var_dump(Document::create());

结果:Fatal error: Cannot instantiate abstract class DomainObject in......

self 对当前类的静态引用,取决于定义当前方法所在的类。也就是说,这里的self被解析为定义create()的DomainObject,而不是解析为调用self的Document类。


abstract class DomainObject{        public static function create(){                return new static();//延迟静态绑定        }} class User extends DomainObject{}class Document extends DomainObject{} var_dump(Document::create());

结果:

class Document#1 (0) {

}


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP