我正在将 PHP 5.3 库转换为在 PHP 5.2 上工作。阻碍我的主要事情是使用后期静态绑定,例如return new static($options);
,如果我将其转换为return new self($options)
我会得到相同的结果吗?
有什么区别new self
and new static
?
我会得到相同的结果吗?
并不真地。不过,我不知道 PHP 5.2 的解决方法。
有什么区别new self
and new static
?
self
指的是同一个类,其中new
关键字实际上是写的。
static
,在 PHP 5.3 的最新静态绑定中,指的是层次结构中您调用该方法的任何类。
在下面的示例中,B
这两个方法都继承自A
. The self
调用必然是A
因为它定义在A
第一个方法的实现,而static
绑定到被调用的类(另请参见get_called_class() http://php.net/manual/en/function.get-called-class.php).
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()); // A
echo get_class(B::get_static()); // B
echo get_class(A::get_self()); // A
echo get_class(A::get_static()); // A
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)