¿Hay alguna manera en php para escribir sugerencias para dos interfaces diferentes, no relacionadas? Por ejemplo:Tipo Sugerencia para múltiples interfaces no relacionadas
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();
}
}
Como se puede ver en el código anterior, la clase grabador espera que su módulo de tener la capacidad de ejecutar tanto error()
y ssh_for_recorder()
, pero estos son definidos por diferentes interfaces. errorable no necesita ser registrable y viceversa tampoco.
¿Existe una mejor práctica para hacer esto? Estaba pensando en crear una interfaz que se extienda desde grabable y errorable y tener upload__module implementar eso, pero no sé cómo llamarlo.
¿Qué tiene esto que ver con el tipo de alusión? – Hamish
Ver el constructor de la grabadora. Quiero escribir una sugerencia tanto grabable como errorable. –
Creo que @Hammish se está confundiendo, la sugerencia de tipo en PHP requiere que una clase sea de cierto tipo, donde @tandu requiere que se comprueben varios tipos de interfaces. – RobertPitt