Joyride Posted July 17, 2008 Report Share Posted July 17, 2008 Ir TRequest klase, kura kalpo ka reģistrs visiem superglobāļiem (GET, POST, COOKIE, SERVER) class TRequest { $SERVER = array(); public function __construct() { $this->SERVER = $GLOBALS['_SERVER']; unset($GLOBALS['_SERVER']); } } Lieta tāda, ka ja PHP konfigurācijā "auto_globals_jit" ir uzstādīts uz "On", tad: "the SERVER and ENV variables are created when they're first used (Just In Time) instead of when the script starts." Šādā gadījumā, TRequest::__construct metodē $GLOBALS['_SERVER'] ir neeksistējošs mainīgais, tā arī ir problēma, kuru gribu atrisināt. Viens variants ir kautkur ārpus visām klašu metodēm un funkcijām (piem. skripta sākumā) likt PHP izveidot šo mainīgo kaut vai šādi: $_SERVER['dummy'] = 1; ... un tad izveidot Request klasi. Vai ir vēl kāds veids to panākt, nepiesārņojot kodu ar šādu paņēmienu? Link to comment Share on other sites More sharing options...
andrisp Posted July 17, 2008 Report Share Posted July 17, 2008 $this->SERVER = $_SERVER; ? It kā taču vajadzētu strādāt, jo tu akseso $_SERVER, tātad izmanto. Bet vispār - man kaut kā neliekas laba doma unsetot šos globālos mainīgos. Ja nu kāds third party scripts tos izmanto ? Kāpēc vispār taisi tā ? Kāds praktisks iemesls ? Link to comment Share on other sites More sharing options...
Joyride Posted July 18, 2008 Author Report Share Posted July 18, 2008 andrisp - Paldies! $GLOBALS['_SERVER'] nestrādāja, bet $_SERVER strādā! Unset globālajiem taisu tādēļ, lai programmētājs būtu spiests lietot Request klasi, lai piekļūtu šiem mainīgajiem, jo pirms tam vajag veikt dažādus drošības pasākumus, piem. strip_tags, vai stripslashes, atkarībā no mainīgā + vēl rewrite url funkcionalitāte (nevis $_GET['module'], bet, piem. $REQUEST->module, $REQUEST->lang, $REQUEST->param('id') utt.) un daudzas citas lietas. Vārdu sakot, vienots interfeiss. Bez tam tiks lietots custom sesiju klase, tā kā par $_SESSION arī var aizmirst. Pagaidām netiek izmantots neviens 3rdparty skripts. Ja būs vajadzība pēc kāda, tad veikšu mazas izmaiņas :) Link to comment Share on other sites More sharing options...
Recommended Posts