Andreas Korthaus: Instantiierung eines Objekts verhinden

Beitrag lesen

Hi!

Irgendwelche Vorschläge ? Weder "return false" oder "unset($this)" funktionieren :(

Evtl. mal

$this = NULL;

sonst

die();

Musst dann aber dafür sorgen dass sowas nicht nur hier und da zur Laufzeit passiert. die() wurde z.B. oft verwendet, um mit PHP4 abstrakte Klassen abzubilden:

if ($this) die();

Aber Du willst ja etwas anderes, wenn ich das richtig sehe.

Ich würde evtl. überlegen das Objekt nicht per "new Obj" zu instanzieren, sondern von einer Factory-Methode erzeugen zu lassen, die dann das Objekt zurück gibt, oder eben FALSE, das würde ich als sauberer empfinden.

Das heißt so:

$var = MeineKlasse::factory($arg);

wobei factory() dann so aussieht:

function factory($arg) {
  if (!check($arg)) {
    return FALSE;
  }
  else {
    return new MeineKlasse($arg);
  }
}

nur mal ganz verkürzt. Kannst ja mal nach "Factory Pattern" googlen. Allerdings würde ich inzwischen bei neuen projekten durchaus erwägen PHP5 einzuseten, es gibt wirklich zahlreiche (bekannte) Provider, die das inzwischen anbieten.

Grüße
Andreas

--
SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/