php抽象静态方法简单示例

发布时间:2019-12-15编辑:脚本学堂
本文介绍了php抽象静态方法的用法,提醒下 php 5.2起不再支持抽象静态方法,继续使用,将导致 e_strict 错误,不了解的朋友可以参考下。

php 5.2开始,不再允许同时使用 abstract static 修饰一个类方法。
php 不再支持 抽象静态方法,继续使用,将导致 e_strict 错误。

例如,代码:
 

复制代码 代码示例:
<?php
abstract class foo {
    abstract static function bar();
} // www.jb200.com
 

将导致错误:Strict Standards:  Static function foo::bar() should not be abstract in filename on line n
回过头想想,为何要使用抽象静态方法呢?无非是强制子类去实现一个同名静态方法。
在 PHP Manual 中(http://cn.php.net/manual/zh/migration52.incompatible.php),有这样一段文字介绍:

PHP

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.
可以继续使用接口 Interface 来进行子类实现的约束。

将以上代码修改为:
 

复制代码 代码示例:
<?php
interface iBar {
    public static function bar();
}
 
abstract class foo implements iBar{
}
 

如此,foo 的子类也必须要实现 iBar 中的全部方法,从而保证了子类中必须要实现 bar() 静态方法。