/ / Je niečo zle s vrhnutím $ _REQUEST na objekt? - php, polia, formy, objekt

Je niečo v poriadku pri odovzdávaní $ _REQUEST na objekt? - php, polia, formuláre, objekt

V PHP je nesprávne obsadenie $_REQUEST objektu ľahšie spravovať?

$request = (object) $_REQUEST;
if(isset($request->submit) && isset($request->text) && !empty($request->text))
{
// Do stuff
}

UPRAVIŤ: Mám na mysli akýkoľvek neočakávaný vedľajší účinok?

odpovede:

3 pre odpoveď č. 1

Povedal by som, že s tým nie je nič zlés výnimkou malého pridaného času, ktorý získate. Čo by som však urobil, je spustiť pole $ _REQUEST pomocou funkcie čistenia na overenie a vyčistenie premenných. Týmto spôsobom môžete vždy vedieť, že ak používate objektovú verziu $ _VEDOMIEJTE, že je bezpečné používanie.

aktualizovať

Chcel by som ísť tak ďaleko, že to bude asi najlepšieprax vo svete moderných webových aplikácií. Myslím tým pozrieť sa na rámce MVC, ktoré používate (Zend, CodeIgniter, CakePHP atď.), Všetky čistia $ _REQUEST, $ _GET, $ _POST, $ _SERVER atď. A prevádzajú ich na objekty.

Pamätajte si, že režijné náklady na niečo takéby bolo také minimálne, že by ste si to vôbec nevšimli. Čas potrebný na analýzu a výstup stránky PHP je taký malý, zvyčajne menší ako požiadavka DOM na jeden obrázok.


2 pre odpoveď č. 2

Nič to nevidím zle s tým.

Umožní vám to prístup k asociatívnemu poľu ako objekt.


2 pre odpoveď č. 3

Nebuďte sporní, ale nechápem, ako to uľahčuje spravovanie systému $_REQUEST variabilné. Môžete napísať rovnaký riadok kódu, ako je tento:

if(isset($_REQUEST["submit"]) && isset($_REQUEST["text"]) && !empty($_REQUEST["text"]))
{
// Do stuff
}

Môžu sa vyskytnúť aj problémy s kľúčmi polí, ktoré sa neprekladajú správne na názvy vlastností objektov. Napríklad $_REQUEST["var name"], Úplne legitímne meno poľa, ale preložte pole do objektu a výsledky budete veľmi sklamaní.

Ak však svojim používateľom dôverujete a chcete stráviť ďalšie hodiny cyklov vytváraním nového objektu, môžete ho vždy brutálne vynútiť.

$request = new stdclass;
foreach($_REQUEST as $field => $value){
$request->$field = $value;
}