这个问题在这里已经有了答案:




9年前关闭。






请查看以下代码以了解我的问题。

<?php

Interface IDoesSomething
{
    public static function returnSomething();
}

abstract class MiddleManClass implements IDoesSomething
{
    public static function doSomething()
    {
        return 1337 * self::returnSomething();
    }
}

class SomeClass extends MiddleManClass
{
    public static function returnSomething()
    {
        return 999;
    }
}

// and now, the vicious call
$foo = SomeClass::doSomething();

/**
 * results in a
 * PHP Fatal error:  Cannot call abstract method IDoesSomething::returnSomething()
 */
?>

有没有办法强制抽象 returnSomething(),同时保持从抽象“中间人”类中定义的函数调用函数的可能性?对我来说似乎是 PHP 的瓶颈。

最佳答案

如果您的 php 版本 >= 5.3 然后更改

public static function doSomething()
{
    return 1337 * self::returnSomething();
}


public static function doSomething()
{
    return 1337 * static::returnSomething();
}

关于php - 从继承接口(interface)的类调用静态方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8961050/

10-11 17:24