Moin!
zeig mal deine Funktion her
Im Prinzip ganz einfach:
function getUserID() {
session_start();
$UserId = $_SESSION['UserId'];
return $UserId;
}
Da wirst du wohl zweimal diese Funktion aufgerufen haben. Ist ja auch nicht abwegig. Von der etwas sinnlosen technischen Strategie, eine Funktion zu schreiben, die mit viel Variablenkopieren einen ohnehin global verfügbaren Wert aus $\_SESSION besorgt, mal abgesehen.
session\_start() gehört nicht in eine Funktion, sondern an den Anfang jedes Skriptes. Oder an den Anfang des auf jeder Seite includierten Skriptes mit den globalen Definitionen von allem möglichen (gerne auch Bootstrap genannt).
Was bleibt also übrig, wenn du alle Ratschläge umsetzt?
session\_start() fliegt raus.
Variablen will man auch nicht kopieren.
~~~php
function getUserID() {
return $_SESSION['UserId'];
}
Ziemlich kurz. Kann man so machen. Würde ICH persönlich SO aber in keinem Fall machen, nicht mal als Getter-Methode in einem Objekt. Da wäre $_SESSION in den Konstruktor als Parameter übergeben und in eine als protected definierte Eigenschaft kopiert worden, und der Getter-Zugriff erfolgt auf diese Eigenschaft.
Und wenn du gar keinen objektorientierten Ansatz verfolgst, dann wäre der Direktzugriff auf $_SESSION['UserId'] vermutlich auch schöner.
Jetzt diskutieren wir noch den Unterschied zwischen Array-Indexnamen und gleichlautendem Funktionnamen: Einmal heißt es "UserId" (kleines D), einmal heißt es "UserID" (großes D) - das ist ebenfalls nicht schön. Entscheide dich für genau eine Version - ich würde vorschlagen, vernünftiges CamelCase zu machen, also "UserId". Man kann auch noch diskutieren, ob der Array-Index nicht lieber "userId" heißen sollte - der erste Buchstabe eines Variablennamens gehört laut Zend-Codingstandards klein geschrieben, aber es gibt andere Standards, die auch Alternativen erlauben.
Noch irgendwelche Fragen? :)
- Sven Rautenberg