使用非静态方法覆盖静态方法

时间:2013-05-22 19:33:25

标签: php

我想用非静态方法覆盖静态方法。我收到了这个错误:

Fatal error: Cannot make static method Person::say() non static in class Coder on line 22

我想用更具体的makeCall()覆盖一个非静态的类静态方法makeCall()

代码:

<?php

class Request {

    public static function makeCall($url) {

        // Do some cURL stuff...

    }
}

class API extends Request {

    const PRODUCTS = '/products';

    private $api;

    public function __construct($api) {

        $this->api = $api;
    }

    public function getProducts() {

        $this->makeCall(self::PRODUCTS);
    }

    public function makeCall($service) {

        parent::makeCall($this->api . $service);
    } 
}

我可以让父makeCall()非静态,但我也希望能够在某些地方Request:makeCall()

1 个答案:

答案 0 :(得分:2)

您只需更改方法名称即可。并用新名称调用它。

没有选项可以使它与您正在扩展的类的静态方法具有相同的名称。