Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Funktionsparameter mit statischem Defaultwert

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Funktionsparameter mit statischem Defaultwert

    Hallo,

    da PHP keine Enumerations hat, habe ich mit einer kleinen Klasse beholfen:

    PHP-Code:
    class Mode {
        public static 
    $READ 0;
        public static 
    $WRITE 1;

    Der Zugriff darauf funktioniert auch:
    PHP-Code:
    $mode Mode::$READ;
    echo 
    $mode
    --> 0

    Wenn ich aber den Wert als Defaultwert bei einem Funktionsparameter angeben will, meldet Netbeans eine Fehlermeldung:
    Syntax error: unexpected $READ

    PHP-Code:
        public function __construct($mode Mode::$READ) {

    Geht das nicht oder bin ich zu dusselig?


  • #2
    1. IMHO wären da Klassenkonstanden besser/schöner

    2. Ist das AFAIK nicht möglich, aber lasse mich gerne eines besseren belehren.
    Ich mache das meißt folgendermassen:
    PHP-Code:
    class daniel
    {
        const 
    Foo 'bar';
    }


    function 
    test($b$z NULL)
    {
        if(
    $z == NULL)
        {
            
    $z daniel::Foo;
        }

    Kommentar


    • #3
      mit klassenkonstanten funktioniert das, mit statischen variablen leider nicht:
      PHP-Code:

      class Mode {
          const 
      READ 0;
          const 
      WRITE 1;
      }  

      public function 
      __construct($mode Mode::READ) {

      Wenns wirklich statische variablen sein müssen hilft leider nur der hässliche workaround den ragtek schon nannte....

      Kommentar


      • #4
        Ich würd das auch mit einer Konstanten lösen:

        PHP-Code:
        class Blub
        {
            const 
        VARIABLE'blub';

            public function 
        __construct($var self:VARIABLE) {

            }

        Kommentar


        • #5
          Zitat von ragtek Beitrag anzeigen
          2. Ist das AFAIK nicht möglich, aber lasse mich gerne eines besseren belehren.
          DankeAber komisch das Netbeans das bei mir immer rot Unterwelt. Daher habe ich auch bisher geglaubt, dass es nicht möglich ist

          Kommentar


          • #6
            Also bei mir unteringelt netbeans dass nur wenn ich statische variblen nehme.
            lass einfach das $ nach den :: weg, dann meckert netbeans nichtmehr...

            Kommentar


            • #7
              Unterwelt
              LOL. Grüße aus der Unterwelt!
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Mit Konstanten geht es.
                PHP-Code:
                class Mode {
                    const 
                READ 'HANDLE_READ';
                    const 
                WRITE 'HANDLE_WRITE';


                Eigentlich wollte ich es als statische konstante Variable definieren. Das ging nicht, daher hatte ich es nur als statisch definiert.

                Mich wundert nun eher, dass man auf Konstanten von Klassen Zugriff hat, die gar nicht instanziiert wurden. Genau dafür braucht es doch sonst das static.

                Kommentar


                • #9
                  Konstanten beziehen sich nunmal auf die Klasse, nicht auf das Objekt. Und das ist genau das Verhalten, das auch statisch umsetzt.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar

                  Lädt...
                  X