| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

19-05-2009, 17:48
|
|
analyzer
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Sauerland, Germany
Beiträge: 97
|
|
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?
|

19-05-2009, 17:57
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Aus dem Manual: "The default value must be a constant expression, not (for example) a variable, a class member or a function call."
|

19-05-2009, 18:00
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Machs dir im Konstruktor!
Zitat:
|
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.
|

19-05-2009, 18:03
|
|
analyzer
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Sauerland, Germany
Beiträge: 97
|
|
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
|

19-05-2009, 18:06
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
var ist eindeutig php4.
Ich habe dir einen Link gepostet, da wird die PHP4+5 Syntax beschrieben.
|

19-05-2009, 18:13
|
|
analyzer
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Sauerland, Germany
Beiträge: 97
|
|
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?
|

19-05-2009, 18:16
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
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.
|

19-05-2009, 18:19
|
|
analyzer
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Sauerland, Germany
Beiträge: 97
|
|
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.
Geändert von analyzer (19-05-2009 um 18:24 Uhr)
|

19-05-2009, 18:25
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Den besten Vorschlag hast du doch bereits bekommen:
Zitat:
Zitat von combie
Machs dir im Konstruktor!
|
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

19-05-2009, 18:28
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
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*
Geändert von combie (19-05-2009 um 18:31 Uhr)
|

19-05-2009, 18:33
|
|
analyzer
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Ort: Sauerland, Germany
Beiträge: 97
|
|
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.
|

19-05-2009, 21:36
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
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.
|

20-05-2009, 10:11
|
|
ModestLife
Registrierter Benutzer
|
|
Registriert seit: Sep 2007
Beiträge: 105
|
|
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()).
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|