hotti: Rückgabewert von new()

Beitrag lesen

hi,

verlässt du mal deine sichere perl welt? ;).

Nicht wirklich, ich habe lediglich ein Framework gebaut, was ich zweigleisig fahren kann, d.h., die Responseklassen können wahlweise in Perl oder PHP programmiert sein und da möchte ich mal wieder eine Lok in den Dienst stellen, die das andere Gleis benutzt.

Wobei ich jahrzehntelange Perl-Erfahrungen beim Programmieren mit PHP natürlich nicht über den Haufen werfe, sondern gezielt und auch einsetze ;)

Also in php kannst du den Konstruktor so wie du es willst nicht beeinflussen. Alles was dir bleibt ist die Exception weiter zu leiten oder eine neue zu werfen.

Ja, ist klar, mir kommts jedoch auf kurze Wege und einen überschaubaren Code an: So ist es in Perl durchaus möglich, in einer Zeile zu prüfen, ob die Instanz erstellt werden konnte und wenn nicht, die Ursache dafür aus einer globalen Variablen zu lesen, die immer dann einen Text hat, wenn eine Exception aufgetreten ist (In Perl ist das die Variable $@, die ist mit '' initialisiert).

Kurz und knapp:

  
$object = new Class or die $@;  

Der 'etwas' längere Weg sieht in Perl so aus:

  
$object = new Class; # Instanz wird _immer_ erstellt  
if($@){              # frage Jehova, ob da wer sterben wollte  
   # Exception  
}  
else{  
   # Weiter gehts...  
}  

Oder (auch oft gemacht), aufgrunddessen, dass die Instanz in jedem Fall erstellt wurde, wird auf eine mögliche Exception geprüft, indem über die Instanz eine eigene Methode aufgerufen wird, z.B.:

  
$object = new Class; # Instanz wird _immer_ erstellt  
if($object->exception_error){  
  # lass es krachen Hugo  
}  

Diese beiden Möglichkeiten gäbe es auch in PHP, für welche ich mich entscheide, hängt von meiner Laune ab, und die lasse ich mit nicht mit Sätzen wie 'globale Variablen sind pfui...' vermiesen, denn globale Variablen sind keine Schande, es kommt nur darauf an, diese zweckmäßig einzusetzen.

Hotti