您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP手册中的这个例子怎么理解?

2025/7/1 7:54:54发布13次查看
http://php.net/manual/zh/language.oop5.basic.php
php 5.3.0 引进了两个新方法来创建一个对象的实例:
example #5 创建新对象


第六行的 return new static;是什么意思?
第十四行的 $obj2 = new $obj1; new后面不是应该跟类名吗?这里怎么写的是实例?
回复内容: http://php.net/manual/zh/language.oop5.basic.php
php 5.3.0 引进了两个新方法来创建一个对象的实例:
example #5 创建新对象


第六行的 return new static;是什么意思?
第十四行的 $obj2 = new $obj1; new后面不是应该跟类名吗?这里怎么写的是实例?
http://www.5dphp.com/art_117.html
return new static就是新建一个当前类对象并返回的意思,具体请参考:http://stackoverflow.com/questions/16977369/php-new-staticvariable
后接对象也是php 5.3新加的功能,相当于再new test()了吧,可以看这个测试:http://3v4l.org/xmkai
声明我是一个普通的开发者,我更多关注如何使用代码而不是问为什么。
1 static 是新增的关键字,可以理解为(或者说文档内容翻译为)用于迟绑定。例如
class a { public static $test = 1; public function get() { return self::$test; }}class b { public static $test = 2;}
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;
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product