抽象クラス内で一般的なメソッドを呼び出す適切な方法について少し混乱しています。次のコードを使用します。
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 ドキュメントから理解を見つけることができませんでした。
ありがとう!