Probleme mit $_SERVER in Klasse

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit $_SERVER in Klasse

    Ich schreib grad ein config file für mein neues Projekt.
    Ich wollte mir das manuelle Eintragen der Pfade sparen und auf die $_SERVER Vars zurückgreifen. Doch ein:

    PHP Code:
    class sConfig {
    //Path Configuration
        
    var $absolute_path $_SERVER['DOCUMENT_ROOT'];

    ruft ein Parse error: syntax error, unexpected T_VARIABLE hervor.

    Woran liegt das?

  • #2
    Aus dem Manual: "The default value must be a constant expression, not (for example) a variable, a class member or a function call."

    Comment


    • #3
      Machs dir im Konstruktor!

      Der Standardwert muss ein konstanter Ausdruck sein, aber nicht z.B. eine Variable, ein Klassenattribut oder ein Funktionsaufruf.
      Aus: PHP: Die Grundlagen - Manual

      Und überhaupt, vergiss PHP4, das ist tot.
      Wir werden alle sterben

      Comment


      • #4
        Jo sowas hab ich mir schon gedacht.

        Wieso PHP 4, ist das nicht PHP5?

        Wie muss ich denn jetzt vorgehen, ich habe keine OOP Erfahrung

        Comment


        • #5
          var ist eindeutig php4.

          Ich habe dir einen Link gepostet, da wird die PHP4+5 Syntax beschrieben.
          Wir werden alle sterben

          Comment


          • #6
            PHP Code:
            class sConfig {
                public function 
            server_host() {
                echo 
            $_SERVER["HTTP_HOST"];
                }

            ist das eine akzeptable Lösung?
            Oder ist das jetzt wieder zu umständlich?

            Comment


            • #7
              Ich dachte, du wolltest einen Wert in einer Variablen ablegen - wieso haust du jetzt irgendwas per echo raus?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Comment


              • #8
                Das ist eine berechtigte Frage, da habe ich eventuell etwas voreilig gehandelt.
                naja auf den Wert kann ich damit immerhin mit der Klasse zugreifen,
                so wie ich das verstehe ist es ein Problem das der Inhalt $_SERVER keine Kosntante ist und ich den Wert somit nicht so einfach einer Variablen zuordnen kann.
                Die Lösung zu dem problem erkenn ich aus dem Manual trotzdem nicht so richtig.
                Last edited by analyzer; 19-05-2009, 17:24.

                Comment


                • #9
                  Den besten Vorschlag hast du doch bereits bekommen:
                  Originally posted by combie View Post
                  Machs dir im Konstruktor!
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Comment


                  • #10
                    PHP Code:
                    class sConfig 
                    {
                        protected 
                    $host ''
                     
                        public function 
                    __construct() 
                        { 
                           
                    $this->host $_SERVER["HTTP_HOST"]; 
                        } 

                        public function 
                    server_host() 
                        { 
                           return 
                    $this->host
                        } 


                    // testcode
                    $cfg = new sConfig;
                    echo 
                    $cfg->server_host(); 
                    *ungetestet*
                    Last edited by combie; 19-05-2009, 17:31.
                    Wir werden alle sterben

                    Comment


                    • #11
                      Gut das es dir aufgefallen ist, ich war grad ein wenig verwirrt
                      Vielen Dank für die Hilfe. So wie es da steht hab ich es jetzt verstanden.
                      Werd mich aber sicherlich noch weiter mit OOp beschäftigen müssen.
                      Habe mich schon lang dagegen gewehrt.

                      Comment


                      • #12
                        Vielleicht noch als Hinweis: Du solltest mit solchen SERVER-Werten vorsichtig sein. Wie der Name der Variable schon andeutet stehen diese zum Beispiel auf der Kommandozeile nicht im gleichen Umfang wie im Apache-Kontext zur Verfügung. Da haut man sich gerne mal einen unüberprüften Zugriff irgendwo hinein, welcher dann im Shellskript nicht mehr läuft. Vor allem so etwas wie die Anwendungskonfiguration sollte ja Umgebungsunabhängig sein.

                        Comment


                        • #13
                          Noch ein kleiner Hinweis fürs Wording der Methoden: Fange immer mit einem Verb an. Eine Methode tut etwas. Immer. Wenn du den Hostname zurückgeben willst, dann nen die Methode getServerHost() (oder halt get_server_host()).
                          Mein PHP Blog

                          Comment

                          Working...
                          X