Ankündigung

Einklappen
Keine Ankündigung bisher.

Konstanten in Klassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Konstanten in Klassen

    Besteht die Möglichkeit, eine Konstante in einer Klasse zu definieren und Ihr den Wert über eine Funktion oder Methoden zuzuweisen?
    typisch wäre ja

    const NAME_DER_KONSTANTE = 'Wert';


  • #2
    Zitat von CodeDesigner Beitrag anzeigen
    Besteht die Möglichkeit, eine Konstante in einer Klasse zu definieren und Ihr den Wert über eine Funktion oder Methoden zuzuweisen?
    typisch wäre ja

    const NAME_DER_KONSTANTE = 'Wert';
    Nein, funktioniert nicht (gilt übrigens auch für statische Klassenattribute).

    Kommentar


    • #3
      Eine KONSTANTE ist KONSTANT und kann nachträglich nicht mehr geändert werden... das ist der Sinn einer Konstanten.
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Zitat von CodeDesigner Beitrag anzeigen
        Besteht die Möglichkeit, eine Konstante in einer Klasse zu definieren und Ihr den Wert über eine Funktion oder Methoden zuzuweisen?
        typisch wäre ja

        const NAME_DER_KONSTANTE = 'Wert';
        Dann wäre sie ja veränderbar und nicht konstant. Merkst du was?

        Kommentar


        • #5
          Die Frage ist schon legitim. In anderen Sprachen lassen sich static final Klassenattribute einmalig im Konstruktor initiieren. Sowas wird auch für php diskutiert, als Erweiterung neben const. Problem ist, dass ein Konstruktor mehrfach ausgeführt werden kann.

          Kommentar


          • #6
            Zitat von SirSnyder Beitrag anzeigen
            Die Frage ist schon legitim. In anderen Sprachen lassen sich static final Klassenattribute einmalig im Konstruktor initiieren.
            Klar ist ja uach keine Konstante. Static final bedeuted z.B. in C# genau das was Du schreibst. Dort wird aber eine Konstante auch über das const Keyword festgelegt und dann ist es halt eine Konstante und auch nicht bei der Initialisierung änderbar.

            Korrektur: static final heist nur das die Variable nicht abgeleitet werden darf. readonly wäre in C# das entsprechende Schlüsselwort

            Was Du meinst. (readonly nach initialisierung), gibt es in PHP nicht,
            PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

            Kommentar


            • #7
              Die Frage ist doch warum CodeDesigner keine private Property nimmt die er per Konstruktor oder Methode setzen kann und es eine Konstante sein soll. Wenn eine Klasse mit einer anderen Konstante z.B. zu Testzwecken benötigt wird, dann kann man diese ja auch überschreiben:
              PHP-Code:
              class foo{
                const 
              C1="c1";

                public function 
              getc1(){
                  return static::
              C1;
                }
              }

              class 
              bar extends foo{
                const 
              C1="new";
              }

              $c = new bar;
              $val $c->getc1();  //string(3) "new" 

              Kommentar


              • #8
                PHP-Code:
                const C1=datetime(); 
                geht sowas auch mit __construct() ?
                bitcoin.de <- Meine Freelancerwährung

                Kommentar


                • #9
                  Das geht gar nicht und erzeugt ein Fatal-Error.

                  Kommentar


                  • #10
                    Aus der Doku zu const

                    Der Wert kann nur ein konstanter Ausdruck sein, keine (zum Beispiel) Variablen, Klassenattribute oder Funktionsaufrufe
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar

                    Lädt...
                    X