我想用非静态方法覆盖静态方法。我收到了这个错误:
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()
。
答案 0 :(得分:2)
您只需更改方法名称即可。并用新名称调用它。
没有选项可以使它与您正在扩展的类的静态方法具有相同的名称。