有沒有辦法在PHP中鍵入提示兩個不同的,不相關的接口?例如:類型提示多個不相關的接口
interface errorable {
function error($msg);
}
interface recordable {
ssh_for_recorder();
}
class uploader__module extends base__module implements errorable, recordable {
public function ssh_for_recorder() {
return new ssh2;
}
public function error($msg) {
$this->errors[] = $msg;
}
public function upload() {
$recorder = new recorder($this);
$recorder->run();
}
}
class recorder {
private $ssh2;
private $module;
private function upload() {
if (!$this->ssh2) {
$this->module->error("No SSH2 connection");
}
}
public function __construct({recordable,errorable} $module) {
$this->module = $module;
$this->ssh2 = $module->ssh_for_recorder();
}
}
正如你可以在上面的代碼中看到,記錄類預計其模塊必須同時運行error()
和ssh_for_recorder()
,但這些是由不同的接口定義的能力。錯誤的需要不可記錄,反之亦然。
是否有這樣做的最佳做法?我正在考慮創建一個接口,該接口從可記錄和可錯誤的方面擴展並具有upload__module實現,但我不知道該怎麼稱呼它。
這與鍵入提示有什麼關係? – Hamish 2011-03-01 23:11:37
請參閱記錄器的構造函數。我想輸入提示可錄和可錯。 – 2011-03-01 23:16:34
我認爲@Hammish越來越困惑,PHP中的類型提示需要一個類爲某種類型,其中@tandu需要檢查多種類型的接口。 – RobertPitt 2011-03-01 23:58:00