Maxi: Wohin mit der Fehlermeldung?

Beitrag lesen

Hi,

ein anderer Ansatz waere es zb das ganze auszulagern - da MyClass sicherlich nicht die einzige Klasse sein wird, welche ihre Daten zu validieren hat.

Nur mal als Beispiel*:
Hierfuer koenntest du eine abstrakte Klasse "Validator" erstellen, welche folgende Struktur aufweist

abstract class Validator  
{  
  protected $Errors = array();  
  
  // Implementor must implement this Method  
  public abstract Validate();  
  
  public function HasErrors()  
  {  
    return sizeof( $this->Errors ) > 0;  
  }  
  
  public function GetErrors()  
  {  
    return $this->Errors;  
  }  
  
  public function GetLastError()  
  {  
    return array_pop( $this->Errors );  
  }  
} 

Je nach dem, ob die Validierung tatsaechlich nur im Konstruktor stattfinden soll, koenntest du der abstrakten Klasse noch einen Konstruktor verpassen, welcher bei der Erstellung des Implementors die Parent-Validate() Methode aufruft. Abhaengig vom anschlieszenden Ergebnis der Methode HasErrors() kann dann entschieden werden, wie weiter vorgegangen werden soll (Objekt verwerfen, Daten korrigieren, etc.).

Obwohl ich nicht so ganz verstehe, warum das Objekt als solches erst gar nicht erstellt werden soll. Benoetigte Daten lassen sich ja im Konstruktor deklarieren. Und egal ob das Objekt Fehler aufweist oder nicht, es handelt sich ja schlieszlich um eine Instanz der Klasse - wenn auch um eine invalide, das ist ja durchaus ein gaengiger Zustand eines Objektes.

MfG
Maxi

* Ist jetzt PHP, aber das ist ja egal.