Probleme mit $_SERVER in Klasse

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

  • 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."

    Kommentar


    • #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

      Kommentar


      • #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

        Kommentar


        • #5
          var ist eindeutig php4.

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

          Kommentar


          • #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?

            Kommentar


            • #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.

              Kommentar


              • #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.
                Zuletzt geändert von analyzer; 19.05.2009, 17:24.

                Kommentar


                • #9
                  Den besten Vorschlag hast du doch bereits bekommen:
                  Zitat von combie Beitrag anzeigen
                  Machs dir im Konstruktor!
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #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*
                    Zuletzt geändert von combie; 19.05.2009, 17:31.
                    Wir werden alle sterben

                    Kommentar


                    • #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.

                      Kommentar


                      • #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.

                        Kommentar


                        • #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

                          Kommentar

                          Lädt...
                          X