Thread Prüfung, ob Konstante definiert wurde (14 answers)
Opened by TheMic at 2012-08-02 12:16

TheMic
 2012-08-02 12:16
#160486 #160486
User since
2009-12-29
15 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich bin gerade dabei Schnittstellenklassen, die wir in PHP bereitgestellt haben, auch in Perl zu erstellen (mit möglichst den gleichen Methodensignaturen).

Nun haben wir in PHP eine Klasse ErrorPage, die abhängig vom übergebenen Fehler (als Konstante in der Klasse ErrorPage definiert) auf eine Fehlerseite umleitet.

Das ganze Sieht in etwa so aus:
Code: (dl )
1
2
3
new ErrorPage(ErrorPage::VALIDATIONERROR);
bzw.
new ErrorPage('VALIDATIONERROR');


Die Klasse ErrorPage prüft ganz primitiv mittels der Methode defined(), ob der übergebene Fehler als Konstante definiert wurde:
Code: (dl )
1
2
3
4
5
6
7
8
private function isErrorAvailable($error) {
if(defined('self::' . $error)) {
return true;
}
else {
return false;
}
}

Dies funktioniert, da der Konstantenwert immer gleich dem Konstantennamen ist. Ansonsten müsste man das per Reflection lösen. Anhand der vorhandenen Konstante wird nämlich entschieden, ob die Fehlerseite existiert oder nicht.

Nun weiß ich allerdings nicht, wie ich diese Prüfung in Perl lösen könnte. Per defined() wird hier wohl ausscheiden, da ich hiermit nur prüfen könnte, ob der übergebene Wert gesetzt wurde oder nicht und die Reflectionklassen, die ich bisher gesehen habe, hatten keine Prüfung auf Konstanten.

Ich nutze übrigens ActiveState Perl 5.8 in einer 32-bit Version.

Schonmal danke für eure Hilfe!

MfG Mic

View full thread Prüfung, ob Konstante definiert wurde