【发布时间】:2011-07-06 21:25:07
【问题描述】:
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(),但它们是由不同的接口定义的。 errorable 不一定是可记录的,反之亦然。
是否有执行此操作的最佳做法?我正在考虑创建一个从可记录和可错误扩展的接口并让 upload__module 实现它,但我不知道该怎么称呼它。
【问题讨论】:
-
这与类型提示有什么关系?
-
查看记录器的构造函数。我想输入既可记录又可出错的提示。
-
我认为@Hammish 很困惑,PHP 中的类型提示要求类是某种类型,而@tandu 需要检查多种类型的接口。
标签: php oop interface type-hinting