frankx: private variable oder constant?

Hellihello

besser:

  
class Pictures {  
  define("DIRNAME", "my_dir_name");  
}  

oder

  
class Pictures {  
  private static $dirname = "my_dir_name";  
}  

? Oder isses wurscht?

Dank und Gruß,

frankx

--
tryin to multitain  - Globus = Planet != Welt
  1. ... hmmm, ist IMO nicht wurscht. Bei erstere Version ist die Konstante nach der Definition auch außerhalb der Klasse "Pictures" vorhanden. Wenn Du $dirname als "private" innerhalb der Klasse definierst, dann ist sie auch nur dort vorhanden.

    Gruß, Josef

    1. Hellihello

      ... hmmm, ist IMO nicht wurscht. Bei erstere Version ist die Konstante nach der Definition auch außerhalb der Klasse "Pictures" vorhanden. Wenn Du $dirname als "private" innerhalb der Klasse definierst, dann ist sie auch nur dort vorhanden.

      Was ja nicht gewünscht wäre. Auch wenn es ja eine Konstante ist, in dem Sinne, dass sie nicht variiert wird zu Laufzeit.

      Dank und Gruß,

      frankx

      --
      tryin to multitain  - Globus = Planet != Welt
    2. Hellihello

      ... hmmm, ist IMO nicht wurscht. Bei erstere Version ist die Konstante nach der Definition auch außerhalb der Klasse "Pictures" vorhanden. Wenn Du $dirname als "private" innerhalb der Klasse definierst, dann ist sie auch nur dort vorhanden.

      oder halt Klassenkonstanten

      http://de.php.net/manual/de/language.oop5.constants.php

      Die aber wieder können nicht "private" deklariert werden, oder? Ich dachte immer, alles solle so privat wie möglich sein.

      Dank und Gruß,

      frankx

      --
      tryin to multitain  - Globus = Planet != Welt
      1. echo $begrüßung;

        oder halt Klassenkonstanten
        Die aber wieder können nicht "private" deklariert werden, oder?

        Die Frage ist deutlich schneller selbst zu beantworten, als sie hier einzutippen, geschweige denn auf die Antwort zu warten.

        class foo {
            private const bar = 42;
          }

        in ein Script tippen - man hat ja meist eh eine test.php rumliegen, in der man verschiedenen Dinge mal schnell probieren kann - und dann ausführen lassen. Alternativ eine PHP-IDE verwenden, die Syntaxfehler gleich bei Tippen anzeigt. Sobald das private hinzukommt landen rote Wellenlinien darunter und unter const.

        Bei als private deklarierten Variablen kann eh keiner von außerhalb zugreifen[1]. Mit Selbstdisziplin wird sich ihr einmal zugewiesener Wert auch nicht ändern.

        [1] Es gibt da wohl ein Bug/Feature, mit Typecast oder was in der Art, mit der man auf alles zugreifen kann, auch auf als private deklarierte Variablen. Doch das ist unter Vorsatz seitens des Klasssen-Anwenders einzuordnen und nicht unter Fahrlässigkeit des Autors.

        echo "$verabschiedung $name";

        1. Hellihello

          Die Frage ist deutlich schneller selbst zu beantworten, als sie hier einzutippen, geschweige denn auf die Antwort zu warten.

          class foo {
              private const bar = 42;
            }

          1:0

          in ein Script tippen - man hat ja meist eh eine test.php rumliegen, in der man verschiedenen Dinge mal schnell probieren kann - und dann ausführen lassen. Alternativ eine PHP-IDE verwenden, die Syntaxfehler gleich bei Tippen anzeigt. Sobald das private hinzukommt landen rote Wellenlinien darunter und unter const.

          scite

          Bei als private deklarierten Variablen kann eh keiner von außerhalb zugreifen[1]. Mit Selbstdisziplin wird sich ihr einmal zugewiesener Wert auch nicht ändern.

          Was dann heißt: wozu "const", nimm private (static), dann wir auch durchs "$" immer klar, dass es ein Systemwert ist?

          [1] Es gibt da wohl ein Bug/Feature, mit Typecast oder was in der Art, mit der man auf alles zugreifen kann, auch auf als private deklarierte Variablen. Doch das ist unter Vorsatz seitens des Klasssen-Anwenders einzuordnen und nicht unter Fahrlässigkeit des Autors.

          Aber wozu sollte man das wollen?

          Warum aber tauchen als "private" deklarierte Vars nicht in einer Doku mit "phpdocumentor" aus?

          Dank und Gruß,

          frankx

          --
          tryin to multitain  - Globus = Planet != Welt
          1. echo $begrüßung;

            Bei als private deklarierten Variablen kann eh keiner von außerhalb zugreifen[1]. Mit Selbstdisziplin wird sich ihr einmal zugewiesener Wert auch nicht ändern.
            Was dann heißt: wozu "const", nimm private (static), dann wir auch durchs "$" immer klar, dass es ein Systemwert ist?

            Es gibt keinen Zusammenhang zwischen dem $ und einer hineininterpretierten Bedeutung. Das $ ist nur ein syntaktisch vorgeschriebenens Element.

            [1] Es gibt da wohl ein Bug/Feature, mit Typecast oder was in der Art, mit der man auf alles zugreifen kann, auch auf als private deklarierte Variablen. Doch das ist unter Vorsatz seitens des Klasssen-Anwenders einzuordnen und nicht unter Fahrlässigkeit des Autors.
            Aber wozu sollte man das wollen?

            Das ist die Frage. Es ist nur irgendjemandem aufgefallen, der meinte einen Typecast von einem Objekt zu einem Array durchzuführen, und hat dann private Elemente gesehen. Vielleicht war es auch was mit Reflection. Ich weiß es nicht mehr genau. Es ist irgendwo in PHPs Bugtracker zu finden.

            Warum aber tauchen als "private" deklarierte Vars nicht in einer Doku mit "phpdocumentor" aus?

            Das musst du den Autor dieser Software fragen. Es kann gut sein, dass die PHP5-Syntax noch nicht berücksichtigt wird.

            echo "$verabschiedung $name";