http://php.net/manual/zh/language.oop5.basic.php
PHP 5.3.0 引进了两个新方法来创建一个对象的实例:
Example #5 创建新对象
第六行的 return new static;是什么意思?
第十四行的 $obj2 = new $obj1; new后面不是应该跟类名吗?这里怎么写的是实例?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
声明我是一个普通的开发者,我更多关注如何使用代码而不是问为什么。
1 static 是新增的关键字,可以理解为(或者说文档内容翻译为)用于迟绑定。例如
B对象实例执行get方法会得到A对象声明中定义的TEST值,而不是B本身的,但是把
return self::$TEST修改成return static::$TEST则会得到预期的结果。最明显的好处是单件对象的继承变得容易了。2 至于new $obj,应该算是个魔术写法?以前可以使用
$className = 'stdClass'; $obj = new $className的方式构造,这应该是个变种吧,只是一种简化,没什么特别的。因为它很明显等效于$className = get_class($instance); $obj = new $className;