MR: Konstantenname statt Wert übergeben

Hallo,

ich habe eine Konstante definiert und will nun nicht nur den Wert übergeben bekommen, sondern auch mal den Namen, geht das?
ein Bsp zur Erklärung:

define('Bsp', 'Beispiel');
...
//mehrere constanten, die je nach Situation $const zu gewiesen werden
$const = Bsp;
...
if ( $const == "Bsp"){ //was nicht geht, da hier $const = "Beispiel"
 echo $const; // hier soll "Beispiel" ausgegeben werden
}

wär schön wenn mir also jemand sagen könnte, wie ich den Konstantennamen übergebe ohne dass er interpretiert wird. sowas wie $i = "Bsp"; bringt mir nichts, da der Wert von $i ja variabel sein soll ;)

danke MR

  1. define('Bsp', 'Beispiel');
    ...
    //mehrere constanten, die je nach Situation $const zu gewiesen werden
    $const = Bsp;
    ...
    if ( $const == "Bsp"){ //was nicht geht, da hier $const = "Beispiel"

    Das ist recht was sinnlos. Der Wert einer Konstante ist, oh Wunder, konstant, es ist also unnötig, eine Konstante an Hand ihres Namens zu identifizieren, wenn das genauso gut an Hand ihres Wertes funktioniert. Was hindert dich daran, $const == Bsp zu schreiben?

    1. @dedlfix: könntest du das bitte noch etwas ausführen? danke.

      @die Anderen 2: ein Beispiel ist in erster Linie ein Beispiel ;)
      soll heißen, dass ich nicht nur "Beispiel" ausgeben will, und der wert der konstanten nicht nur ein Wort sein soll, auf dass ich dann einfach auf Gleichheit prüfen könnte. meiner Meinung nach ist der sinn einer konstanten einen einfachen, kurzen namen zu erhalten mit dem das Handling einfacher ist, als mit einer komplexeren Struktur?!
      wie ich bereits versuchte zu erklären bringt es mir nichts nur 'echo Bsp;' zu schreiben, da ich den Namen der Konstanten in einer Variablen übergeben bekomme, was ja an sich auch kein Problem darstellt.

      MfG MR

      1. Hallo,

        @die Anderen 2: ein Beispiel ist in erster Linie ein Beispiel ;)

        nein. Wenn Du Dir keine Mühe gibst, Dein Problem zu erläutern, dann ist das Dein Problem. Nicht meines. Ich habe Dir gesagt, dass ich anhand Deiner Ausführungen nicht verstehe, wo Dein Problem liegt. Warum gibst Du Dir nicht mehr Mühe?

        soll heißen, dass ich nicht nur "Beispiel" ausgeben will, und der wert der konstanten nicht nur ein Wort sein soll, auf dass ich dann einfach auf Gleichheit prüfen könnte. meiner Meinung nach ist der sinn einer konstanten einen einfachen, kurzen namen zu erhalten mit dem das Handling einfacher ist, als mit einer komplexeren Struktur?!

        Nein, meine Konstanten haben sprechende Namen, die meist viel länger sind als der Wert, den sie repräsentieren.

        wie ich bereits versuchte zu erklären bringt es mir nichts nur 'echo Bsp;' zu schreiben, da ich den Namen der Konstanten in einer Variablen übergeben bekomme, was ja an sich auch kein Problem darstellt.

        Warum übergibst Du den Namen der Konstanten und nicht ihren Wert? Das ist es, was ich nicht verstehe.

        @dedlfix: könntest du das bitte noch etwas ausführen? danke.

        Welches Problem hast Du bei der Benutzung des Handbuches? Hingehen, gucken, einmal klicken, lesen, glücklich sein.

        Freundliche Grüße

        Vinzenz

        1. @gonzo, danke für hilfreiche Antwort, endlich mal jemand der antwortet anstatt nur dumm rum zu labern

          was wohl zu Vinzenz führt, es ist mir egal ob du mein Beispiel nicht verstehen willst und ich will auch nicht dein deprimierendes Leben in 10Zeilen verfasst haben, das gehört hier nicht hin. wenn dir langweilig ist, dann such dir bitte einen Chattpartner...

          1. Hi,

            @gonzo, danke für hilfreiche Antwort,

            Dein Beispiel war sinnfrei und in der Form nicht verstaendlich, auch Gonzo konnte lediglich raten, was du gemeint haben koenntest.

            endlich mal jemand der antwortet anstatt nur dumm rum zu labern
            [restliches saudaemliches Geschwaetz geloescht]

            Anstatt so einen Bullshit von dir zu geben, koenntest du dir das naechste Mal vielleicht gleich etwas Muehe geben, dein Problem verstaendlich zu beschreiben.

            MfG ChrisB

      2. meiner Meinung nach ist der sinn einer konstanten einen einfachen, kurzen namen zu erhalten mit dem das Handling einfacher ist, als mit einer komplexeren Struktur?!

        Eher, einen feststehenden, häufig verwendeten Wert nur einmal im Code zu definieren, um nicht dem Missgeschick zu erliegen, andernfalls irgendwann mal eine der drei Dutzend zu ändernden Stellen zu vergessen.
        Aber natürlich kann man sie auch einfach als Kürzel benutzen, keine Frage.

        da ich den Namen der Konstanten in einer Variablen übergeben bekomme, was ja an sich auch kein Problem darstellt.

        Ich gebe zu, jetzt komme ich mit der merkwürdigen PHP-Konstantenbehandlung in Schwierigkeiten, aber üblichweise existiert eine Konstante als solche überhaupt nicht. Konstanten sind mit das Erste, was ein Parser aus dem Quellcode rauswirft und durch die jeweiligen Werte ersetzt. Dementsprechend kannst du auch den Namen einer Konstanten nicht übergeben bekommen bzw. ihn während es Programmablaufs nutzen - er existiert einfach nicht.
        Aber vielleicht liege ich damit bei PHP ja falsch, wäre nicht die einzige fragwürdige Merkwürdigkeit, die diese Sprache hat  …

    2. Hello,

      Das ist recht was sinnlos. Der Wert einer Konstante ist, oh Wunder, konstant, es ist also unnötig, eine Konstante an Hand ihres Namens zu identifizieren,

      Wieso sollte es unsinnig sein, den namen einer Konstanten zu kennen?

      Liebe Grüße

      Tom vom Berg

      --
      Nur selber lernen macht schlau
  2. Hallo

    ich habe eine Konstante definiert und will nun nicht nur den Wert übergeben bekommen, sondern auch mal den Namen, geht das?

    ich verstehe nicht was Du meinst.

    ein Bsp zur Erklärung:

    das nichts erklärt. Ich verstehe nicht, was Du willst.

    define('Bsp', 'Beispiel');
    ...
    //mehrere constanten, die je nach Situation $const zu gewiesen werden
    $const = Bsp;
    ...
    if ( $const == "Bsp"){ //was nicht geht, da hier $const = "Beispiel"
    echo $const; // hier soll "Beispiel" ausgegeben werden
    }

    Warum nicht:

      
    if ($const == Bsp) {  
        echo Bsp;  
    }
    

    Das ist doch viel einfacher. Die nötige Information bleibt die gleiche.

    Freundliche Grüße

    Vinzenz

  3. echo $begrüßung;

    wär schön wenn mir also jemand sagen könnte, wie ich den Konstantennamen übergebe ohne dass er interpretiert wird.

    Nimm den Namen als einen String. Dann schnapp dir das PHP-Handbuch und schau im Umfeld der dir schon bekannten Funktion zu definieren von Konstanten nach Verweisen zu anderen Funktionen.

    echo "$verabschiedung $name";

  4. Hello,

    mit get_defined_constants() http://de3.php.net/manual/en/function.get-defined-constants.php kannst Du die definierten Konstanten abfragen.
    Wenn Du den Wert hast, kannst Du das teilweise rückwärts auflösen. Allerdings ist die Abbildung nicht bijektiv, http://de.wikipedia.org/wiki/Bijektivität, da es zwar jeden Namen nur einmal geben darf, aber die Werte selbstverständlich öfter vorkommen dürfen.

    Mit den Array-Funktionen kann man dann den Key (die Keys) (Namen der Konstanten) ermitteln.

    Liebe Grüße

    Tom vom Berg

    --
    Nur selber lernen macht schlau