PHP çoklu inheritences için geçici çözüm?

0 Cevap php

Benim PHP sınıfları bir sürü olarak, ben bu kod var:

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;
}

Bir nesne farklı sınıfların bir grup tam bu kodu var ama vb bir hata durumunu, hata dizesi nedir, varsa dışarıda kod bilmek böylece nokta tekrarlayan bir!

Ben yapabileceğim bir çift uzantısı isterdim

class childClass extends parentClass, error {
    ...
}

Ve doğuştan bu özellikleri ve yöntemleri vardır, ama PHP birden inheritances desteklemiyor. Ne yaptığımı düşünüyordum, her sınıf içinde var olan bir hata sınıfı yaratıyor. Ben kamu yaparsanız, ben nesnesi üzerinden doğrudan arayabilirsiniz

if ( $myObject->error->isError() ) {...}

ama aynı zamanda, ihtiva sınıf dışında kendi hata durumu ayarlanabilir yapmazdım

$myObject->error->setError("I shouldn't be doing this here");

Ben oldukça kaçınmak hangi?

Yoksa, hata nesnesi üzerinde uygun çağrıları yapmak, hangi içeren sınıfta 'geçidi' fonksiyonları yazmak ve dışarıdan hata durumunu ayarlama önleyebilir

class childClass extends parentClass {

    private $error;

    public function __construct(...) {
        ...
        $error = & new error();
        ...
    }

    public function isError() {...}
    public function getError() {...}
    public function getErrorCode() {...}
    private function setError() {...}

    ...
}

ama ben önlemek için çalışıyorum kod çoğaltılması (bazı) yol açar.

Optimal çözüm nedir burada? Dış dünya minimal tekrarı ile, onların hata durumunu görebilirsiniz böylece ben, nesnelerin bir dizi hata durumları için özelliğe sahip çalışıyorum.

0 Cevap