理解 PHP 中“新自我”和“新静态”之间的差异
将 PHP 5.3 库转换为 PHP 5.2 可能会带来挑战,主要是由于语法上的差异。症结之一是使用后期静态绑定,例如 return new static($options)。
转换为“新自我”的影响
将 return new static($options) 更改为 return new self($options) 将不会产生相同的结果。 PHP 5.3 中引入的后期静态绑定允许您使用 static 关键字调用类的方法,该关键字引用调用该方法的类。然而,PHP 5.2 不支持此功能。
“新自我”和“新静态”之间的主要区别
示例:
考虑以下内容code:
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
在此示例中,get_self 中的自调用绑定到类 A,因为该方法是在 A 中定义的。但是,get_static 中的静态调用绑定到该方法所在的类被称为,根据上下文而变化(例如,第二个中的 B
结论
对于 PHP 5.2,后期静态绑定没有直接的解决方法。用新的 self 替换 new static 不会提供相同的行为。将 PHP 5.3 代码转换为早期版本时,了解这些关键字之间的区别至关重要。
以上是PHP 5.2 到 5.3 迁移:`new self()` 和 `new static()` 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!