我对在抽象类中调用通用方法的正确方法有点困惑。使用以下代码:
abstract class Transaction {
abstract public function process();
abstract public function set_status();
protected function get_valid_statuses() {
return array(
'pending',
'approved'
);
}
}
class Purchase extends Transaction {
public function process() {
}
public function set_status( $status ) {
//check against valid statuses
$valid = Transaction::get_valid_statuses();
.......
}
}
显然,这段代码还远未完成,但对于这个例子来说应该足够了。我想知道为什么会这样,因为我已经测试过了。在我的 Purchase 类中,当使用 set_status 方法时,我get_valid_statuses()
使用通常用于静态方法的范围解析运算符调用该方法。我会假设使用以下方法调用该方法:
$valid = Transaction->get_valid_statuses();
但我想这行不通,因为该类从未实际实例化。有人可以提供一些澄清。我无法从 PHP 文档中找到关于抽象类或范围解析运算符的理解。
谢谢!