首页 > Web开发 > 详细

PHP new self和new static的区别

时间:2016-02-18 19:58:57      阅读:197      评论:0      收藏:0      [点我收藏+]
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) {

}


PHP new self和new static的区别

原文:http://xtceetg.blog.51cto.com/5086648/1743064

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!