Übergebene Bezeichnung einer Constante als String verwenden

  • Hallo,


    ich habe folgendes Problem:


    Ich habe eine Klasse, einer Funktion darin übergebe ich per Parameter eine Konstante ( es MUSS eine Konstante sein )


    diese sieht zB so aus:


    PERMISSION_NEWS = 1


    nun brauche ich genau diese Bezeichnung PERMISSION_NEWS damit ich einen Postfix dranbasteln kann (dynamisch natürlich), sprich so:


    PHP
    1. $default_strength = constant( $name_der_constante . "_DEFAULT" );


    Leider finde ich dazu bei Google nur die ReflectionClass oder get_defined_constants() und sowas, was mir in dem Fall nicht wirklich weiterhilft, da ich da ja auch jeweils den Konstantennamen als String brauche...


    Ich kann die ganzen Konstanten auch nicht per foreach durchlaufen und über den Variablennamen checken, da da das nur Zahlen sind und sich das mit vielen anderen Konstanten überschneiden könnte.


    Jemand eine Idee ? Nur zu Erinnerung: Ich MUSS eine Konstante übergeben, keinen String


    Lg

  • Nope, hilft nicht.


    Es geht eben nicht darum wie ich dynamisch auf den Inhalt der Konstante komme sondern auf den Bezeichner

    PHP
    1. if(isset($this) || !isset($this)){ // that's the question...
  • Ich kenne keine Möglichkeit um das hin zu bekommen. Ich frage mich allerdings, wo diese implementation Sinn machen würde. Nach der Beschreibung die du hier gibst verwendest du deine Konstante als ein Key/Value Pair, dafür sind Konstanten nicht gedacht.


    Warum *muss* es eine Konstante sein?

  • Das wär auch mein Ansatz. Als ein Beispiel, so speichere ich in meinen Applikationen Werte, die nicht regelmässig verändert weden, aber von verschiedenen Klassen benötigt werden:


    2 Mal editiert, zuletzt von lukasn () aus folgendem Grund: Zeilenumbrüche repariert

  • Wofür sind Konstanten dann gedacht ? ^^


    Ehrlichgesagt find ich die Objekt-Variante auch schöner - ich hab diese Struktur von Konstanten, die alle gewisse konstante Daten speichern und projektweit zur Verfügung stellen, noch aus dem alten Bauplan des phpBB2 übernommen - das ist nun auch schon locker 5-6 Jahre her und seit dem nie in Erwägung gezogen etwas anderes zu machen o.o


    Ergänzung:
    Es geht mir vorallem deswegen darum Konstanten zu verwenden, weil sie sich von den üblichen Variablen abheben, erstens dadurch, daß sie alle groß geschrieben sind und durch das fehlende $. Es hilft mir schon ziemlich bei der Lesbarkeit.

  • Konstanten sind dafür da, dass man werte, die nicht verändert werden dürfen im script vorhalten kann.
    wenn man diese konstanten im inlcudierungsweg weit genug oben ansiedelt, ist es recht easy applikationsweit eben diese werte vorhalten zu können.
    ich nutze konstanten nur für übersetzungen, die nicht in einer datenbank stehen.
    zb für homepages, die multilingual sein sollen, aber die nicht komplett datenbankbasiert sind.
    so kann man prima eine csv einlesen und dann on the fly aus der csv ne php-file generieren, wo diese translations drin sind.


    muss man nur noch für die entsprechende sprache die richtige sprachdatei laden und fertig.


    dann gibt es noch mathematische konstanten, die man so setzen kann, aber auch eben, wie bereits erwähnt einfach dinge, die man nicht ändern können soll.
    für alles andere gibt es datentypen in form von variablen ;)


    also machst du doch irgendwas falsch, wenn du konstanten für bessere lesbarkeit nutzt^^

  • Ich nutze Konstanten zB so wie du sagtest als include Datei, für Tabellennamen, zB, oder auch für Statuswerte, die dann im Prinzip eine Zahl lesbar machen.

    PHP
    1. if(isset($this) || !isset($this)){ // that's the question...