在有很多我的PHP类的,我有这样的代码:PHP中的多重继承的解决方法?
private $strError = "";
private $intErrorCode = NULL;
private $blnError = FALSE;
public function isError() {
return $this->blnError;
}
public function getErrorCode() {
return $this->intErrorCode;
}
private function setError($strError, $intErrorCode = NULL) {
$this->blnError = TRUE;
$this->intErrorCode = $intErrorCode;
$this->strError = $strError;
}
的一点是,这样外部的代码可以知道,如果一个对象有错误状态,有什么错误的字符串,等等。但在一堆不同的类中使用这个确切的代码是重复的!
我很想有一个双扩展名,我可以做
class childClass extends parentClass, error {
...
}
,并将这些属性和方法与生俱来的,但是PHP不支持多重继承。我在想的是创建一个存在于每个类中的错误类。如果我把它公开,我可以直接调用它通过对象
if ($myObject->error->isError()) {...}
,但不会也做出错误状态从包含类以外的设定,
$myObject->error->setError("I shouldn't be doing this here");
我宁愿避免?
或者,我可以写“门户”包含类的功能,它做了错误的对象在适当的调用,防止设置来自外部的错误状态,
class childClass extends parentClass {
private $error;
public function __construct(...) {
...
$error = & new error();
...
}
public function isError() {...}
public function getError() {...}
public function getErrorCode() {...}
private function setError() {...}
...
}
但导致(一些)我试图避免的代码重复。
这里的最佳解决方案是什么?我试图为许多对象提供错误状态的功能,以便外部世界能够以最少的重复来看到它们的错误状态。
我的猜测是你可以做一些类似于所有父类继承的'BaseClass'。这并不高雅,但我能想到的就是这些。 – 2010-08-17 18:01:36