新自我与新静态
我正在将 PHP 5.3 库转换为在 PHP 5.2 上工作。阻碍我的主要问题是使用后期静态绑定,例如 return new static($options);
,如果我将其转换为 return new self($options)
我会得到相同的结果吗?
new self
和 new static
之间有什么区别?
I am converting a PHP 5.3 library to work on PHP 5.2. The main thing standing in my way is the use of late static binding like return new static($options);
, if I convert this to return new self($options)
will I get the same results?
What is the difference between new self
and new static
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
并不真地。不过,我不知道 PHP 5.2 的解决方法。
self
指的是实际写入new
关键字的同一个类。static
,在 PHP 5.3 的最新静态绑定中,指的是层次结构中您调用该方法的任何类。在以下示例中,
B
继承了A
的两个方法。self
调用绑定到A
,因为它是在A
第一个方法的实现中定义的,而static
绑定到被调用的类(另请参阅get_ Called_class()
)。
Not really. I don't know of a workaround for PHP 5.2, though.
self
refers to the same class in which thenew
keyword is actually written.static
, in PHP 5.3's late static bindings, refers to whatever class in the hierarchy you called the method on.In the following example,
B
inherits both methods fromA
. Theself
invocation is bound toA
because it's defined inA
's implementation of the first method, whereasstatic
is bound to the called class (also seeget_called_class()
).如果此代码的方法不是静态的,您可以在 5.2 中使用
get_class($this)
获得解决方法。结果:
If the method of this code is not static, you can get a work-around in 5.2 by using
get_class($this)
.The results:
除了其他人的答案:
这意味着您不能在类属性中使用
static::
,因为属性值:使用 self::
In addition to others' answers :
That means you can't use
static::
in a class property because properties values :Using
self::