gpt4 book ai didi

php - 为什么 PHP 5.2+ 不允许抽象静态类方法?

转载 作者:IT老高 更新时间:2023-10-28 11:47:07 25 4
gpt4 key购买 nike

在 PHP 5.2 中启用严格警告后,我看到了来自一个最初没有严格警告的项目的严格标准警告:

Strict Standards: Static function Program::getSelectSQL() should not be abstract in Program.class.inc



有问题的函数属于抽象父类 Program 并声明为抽象静态,因为它应该在其子类中实现,例如 TVProgram。

我确实找到了对此更改的引用 here :

Dropped abstract static class functions. Due to an oversight, PHP 5.0.x and 5.1.x allowed abstract static functions in classes. As of PHP 5.2.x, only interfaces can have them.



我的问题是:有人可以清楚地解释为什么 PHP 中不应该有抽象静态函数吗?

最佳答案

静态方法属于声明它们的类。在扩展类时,您可以创建一个同名的静态方法,但实际上并没有实现静态抽象方法。

使用静态方法扩展任何类也是如此。如果您扩展该类并创建具有相同签名的静态方法,则实际上并没有覆盖父类(super class)的静态方法

编辑(2009 年 9 月 16 日)
对此进行更新。运行 PHP 5.3,我看到抽象静态又回来了,无论好坏。 (有关更多信息,请参阅 http://php.net/lsb)

更正(由 philfreo)abstract static在 PHP 5.3 中仍然不允许,LSB相关但不同。

关于php - 为什么 PHP 5.2+ 不允许抽象静态类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/999066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com