后期静态绑定:了解“self”与“static”
在将 PHP 5.3 库转换为 PHP 5.2 的上下文中,通过“return new static($options)”使用后期静态绑定会带来兼容性挑战。将其替换为“return new self($options)”不会产生相同的结果。 PHP 5.2 缺乏对后期静态绑定的支持。
理解差异
澄清一下,“self”和“static”之间的区别在于它们的类绑定:
示例:
class A { public static function get_self() { return new self(); } } class B extends A { public static function get_self() { return new self(); } } $a_self = A::get_self(); $b_self = B::get_self(); // $a_self is an object of class A // $b_self is an object of class B
总之,将使用后期静态绑定的代码转换为 PHP 5.2 时,考虑修改逻辑以删除此功能。在某些情况下,“self”可以用作解决方法,但了解其有限的绑定行为很重要。
以上是PHP 5.2 到 5.3 迁移:后期静态绑定中的'self”和'static”有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!