2010-10-28 21 views
0

Pourquoi ce code ne fonctionne pas?

public function get($key) { 
    return isset($_SESSION[$key]) ? &$_SESSION[$key] : false; 
} 

Erreur

Parse error: syntax error, unexpected '&' in C:\Arquivos de programas\EasyPHP-5.3.3\www\myphpblog\code\sessionstorage.class.php on line 12 

Merci.

+0

Utilisez 'array_key_exist ($ key, $ _SESSION)' si vous voulez autoriser la possibilité que '$ _SESSION [$ key]' ait été précédemment défini sur 'null'. – meagar

Répondre

0

Un opérateur ternaire est en réalité trois expressions, par ex. expr1? expr2: expr3;

Voir la Notes in Returning References:

Si vous essayez de retourner une référence d'une fonction avec la syntaxe: return ($this->value); cela ne fonctionnera pas comme vous essayez de retourner le résultat d'une expression, et non une variable , par référence. Vous ne pouvez renvoyer des variables par référence à partir d'une fonction - rien d'autre.

0

La syntaxe de retour d'une référence en PHP est &<function name>(){ return <referece> } Aussi, Only variable references should be returned by reference

Donc, vous devriez probablement réécrire:

function &get($key) { 
    $a = false; 
    if(isset($_SESSION[$key])) 
     return $_SESSION[ $key ]; 
    return $a; 
} 
+1

C'est ... intéressant. Je n'ai aucune idée de ce que retournera une référence à une variable locale en PHP, car je ne l'ai jamais essayé. Dans la plupart des autres langues, c'est une erreur logique sérieuse. – meagar

0

enlèverait juste le & et cela fonctionnera. Dah ...