新自我与新静态我正在将PHP5.3库转换为PHP5.2。我遇到的主要障碍是后期静态绑定的使用,比如return new static($options);,如果我把这个转换成return new self($options)我会得到同样的结果吗?.之间的区别是什么?new self和new static?
3 回答
![?](http://img1.sycdn.imooc.com/5333a0780001a6e702200220-100-100.jpg)
烙印99
TA贡献1829条经验 获得超13个赞
我会得到同样的结果吗?
.之间的区别是什么? new self
和 new static
?
self
new
static
B
A
self
A
A
static
get_called_class()
).
class A { public static function get_self() { return new self(); } public static function get_static() { return new static(); }}class B extends A {}echo get_class(B::get_self()); // Aecho get_class(B::get_static()); // Becho get_class(A::get_self()); // Aecho get_class(A::get_static()); // A
![?](http://img1.sycdn.imooc.com/54584d560001571a02200220-100-100.jpg)
守候你守候我
TA贡献1802条经验 获得超10个赞
将使用运行时信息计算。
static::
必须能够在编译时进行评估,并且不能依赖于运行时信息。
class Foo { public $name = static::class;}$Foo = new Foo;echo $Foo->name; // Fatal error
self::
class Foo { public $name = self::class;}$Foo = new Foo;echo $Foo->name; // Foo
- 3 回答
- 0 关注
- 378 浏览
添加回答
举报
0/150
提交
取消