Je trouve dans mes pages php, je me retrouve avec des lignes et des lignes de code qui ressemblent à ceci: existe une meilleure façon de vérifier ce tableau et attribuez-les à une variable locale s'ils existent ou appliquent une valeur par défaut si elles ne le font pas? p> EDIT: Je ne veux pas utiliser register_globals () code> - je toujours le problème d'émetteur quand même. p> p>
6 Réponses :
Une meilleure méthode peut être de créer une classe singleton / statique à abstrait des détails de la vérification des données de la demande.
Quelque chose comme: p> Vous pouvez alors FAIRE: P> # get an instance of the request
$request = Request::getInstance();
# pass in defaults.
$request->setDefaults(array('name'=>'Please Specify'));
# access properties
echo $request->name;
echo $request->email;
Un exemple de la façon dont cela fonctionnerait? Il semble que cela viendrait obscurcir ce qui se passe. Peut-être que je ne suis pas suivi ...
J'aime ça après tout - :-)
est l'ensemble de variables que vous attendez connaître au moment de l'écriture du script ou souhaitez-vous le faire pour un ensemble arbitraire de valeurs? Si le premier est vrai, vous pouvez faire quelque chose comme ceci:
# This array would hold the names of all the variables you're expecting # and a default value for that variable name $variableNames = array (...); foreach ($variableNames as $key => $default) { if (isset ($_REQUEST[$key])) $$key = $_REQUEST[$key]; else $$key = $default; }
Pourquoi ne pas l'envelopper dans une fonction?
J'aime celui-ci mais ma limite de vote quotidienne est atteinte. J'étais en train d'écrire la même réponse.
La seule chose que je changerais est le nom de la fonction, à quelque chose de plus court. Je pense que post () sonne bien.
Tout d'abord, utilisez Une solution pour votre question serait de créer une fonction qui traite une fonction qui gère la logique $ _ POST code> pour les variables publiées.
_ demande code> est un mashup de nombreuses variables entrantes différentes, pas seulement
£ _ POST CODE> et pourrait causer des problèmes.
isset () code> p>
ouais, parfois j'utilise obtenir, parfois poster, donc je viens d'utiliser _request
Encore une fois, _Request ne peut pas être approuvé car il inclut également les données _Cookie. Voir la documentation: php.net/request
intéressant, je ne savais pas que
Tout d'abord, n'utilisez jamais la variable $ _Request, cela donnera des bugs et d'autres problèmes pendant le développement notez que ce code laisse la variable vide lorsque $ _post [$ clé ] n'a pas été défini p> Vous pouvez également adapter ce code pour vous permettre de vous fournir une valeur par défaut (sensible) lorsque la valeur n'a pas pu être chargée. P>
function getPOST($key, $default = NULL) {
if(isset($_POST[$key])) {
return $_POST[$key];
} else {
return $default;
}
}
Nous avons utilisé la demande partout depuis des années et je n'ai vu aucun problème. Bien que nous n'utilisions pas de cookies ... peut-être que cela a quelque chose à voir avec ça.
null opérateur coalescent ! p>
$ nom d'utilisateur = $ _GET ['' utilisateur '] ?? 'personne'; code> p> blockQuote>
Pour beaucoup de variables, avec une vérification requise, tout le monde est libre d'utiliser mon
attendre < / code> fonction
. p>
Pas assez de représentant pour voter encore, mais j'aime ces réponses!
Wow, quelqu'un est bowevote heureux ici. Ce qui donne?
Je suis avec Brian ici, quelqu'un vole sur les bowvotes. Il y a beaucoup de suggestions parfaitement bonnes ici, bien que certes, la mienne est un peu plus handicapée que de l'envelopper dans une fonction, bien que l'OP a pour effet d'écrire moins de code.
Oui, je ne suis pas sûr de ce qui se passe avec les votes en bas. J'ai senti que j'ai résolu le problème des babycakes de la manière dont il a demandé.
Ils auraient dû au moins laisser un commentaire ..
J'ai fini par supprimer la mine ... 2 Downvotes presque instantanément, mais pas de commentaires ..