在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实现,但我不知道该怎么称呼它.
不,这在PHP中是不可能的.
原文链接:https://www.f2er.com/php/135036.html还有其他支持此功能的语言(主要是功能性的)称为联合类型(http://en.wikipedia.org/wiki/Sum_type).