Bonjour à tous
Je viens de commencer le passage de mon code de PHP 5.3 -> 5.4 il y a un truc qui m'échappe un peu sur les if isset, d'après la doc isset ne s'utilise uniquement pour des variables, engros

Je ne dois plus utilisé

if(isset($_GET'toto']) && $_GET'toto']==1);

mais plutôt

$var = isset($_GET'toto']) && $_GET'toto'] ? $_GET'toto'] : null;

if(isset($var)){
//
}

4 réponses


if(isset($_GET'toto']) && $_GET'toto']==1);

C'est toujours valide tu peux mettre un lien vers l'article qui te dit le contraire ?

La doc php ne dispose pas de tout les cas de figures, ici ils font des exemples avec des variables mais le isset sur les variables GET et/ou POST fonctionnent très bien.

imars
Auteur

En fait j'ai suis entrain de migrer mes projets sur un nouveau serveur avec les dernières versions d'Apache PHP et MySQL et j'ai remarqué qu'avec PHP 5.4 les if(isset($_GET'toto']) && $_GET'toto']==1); ne semble pas aussi bien marché que PHP 5.3

YO! Je pense que vous avez mal compris la doc. ^^

...
isset() fonctionne uniquement avec des variables car l'utilisation de toute autre chose aura comme conséquence une erreur d'analyse.
...

Quand ils écrivent que cette fonction ne fonctionne uniquement avec des variables, ils parlent bien évidemment des paramètres qu'on doit passer à cette fonction.

Fonctionnera: if (isset($lol, $_GET'toto'], $_POST'toto']))
Ne fonctionnera pas : if (isset(CONSTANTE)) - if (isset($foo->bar('toto'))) etc...