PHP tip
Lai iegūtu kādu $_REQUEST
variabli, neizmantojot katrā vajadzīgajā vietā daudz koda rindiņu, esmu ieviesis funkcijas, kuras regulāri lietoju: getgvar()
, getpvar()
, u.t.t.:
# Atgriež $_POST masīva vērtību kejam $key,
# vai arī $default vērtību, ja tāda keja nav. Ja nav
# norādīta defaultā vērtība, kuru atgriezt, tad par tādu
# tiek uzskatīta false
function getpvar($key, $default = false) {
return isset($_POST[$key]) ? $_POST[$key] : $default;
}
Tādas f-jas man ir visiem superglobālajiem masīviem - sesijām, kūkijiem, GET un POST. Parasti es zinu, ar ko tieši no minētajiem masīviem man dati tiek padoti. Un tad, teiksim, var rakstīt:
# Atgriezīs kaku, ja tā ir POST'ā
# + Atgriezīs false, ka 'kaka' nav POST'ā
$kaka = getpvar('kaka');
# + Atgriezīs 'defaultā kaka', ja 'kaka' nav POST'ā
$kaka = getpvar('kaka', 'defaultā kaka');
xrnt
2005. gada 28. aprīlī, plkst. 14:45
Nu es domāju, kam domāšana strādā tie jau sen tādu izmanto :) Ja nē, tad tagad noteikti izmantos.
bubu
2005. gada 28. aprīlī, plkst. 14:46
A var vēl krutāk, visiem masīviem vienu fju: function getvar($key, $arr, , $default=false) { return isset($arr[$key]) ? $arr[$key] : $default; }
bubu
2005. gada 28. aprīlī, plkst. 14:47
uff, komatu par daudz ielikās..
laacz
2005. gada 28. aprīlī, plkst. 14:48
bubu: Dikti daudz jāraksta. Nekādi ne simple :)
BigUgga
2005. gada 28. aprīlī, plkst. 15:15
man identiskas taadas f-jas saucas get() un post()
veel biki mazaak jaaraksta :)
JV
2005. gada 28. aprīlī, plkst. 15:16
getpvar('test'); $_POST['test']; Man domātiņās, ka tā nav nekāda ekonomija - iznāk par vienu simbolu vairāk rakstīt. Un ja nav atšķirības - kāpēc maksāt vairāk? Pat tad, ja to funkciju nosauc īsāk, nekāda īsta ieguvuma nav, bet tas sarežģī koda lasīšanu. Iespējams to var uzlabot, ja tajā funkcijā pieliek klāt arī dažādu mainīgo validēšanas darbības, tad šāda funkcija savu eksistenci attaisno.
M
2005. gada 28. aprīlī, plkst. 15:16
Piekrītu bubu piemērs ir unversālāks
laacz
2005. gada 28. aprīlī, plkst. 15:19
JV: Nunu. A ja mums $_POST['test'] nav iesetots? E_NOTICE parādās :) Un ar neinicializētajiem mainīgajiem darboties nav korekti.
JV
2005. gada 28. aprīlī, plkst. 15:29
Piekrītu. Tāpēc arī minēju, ka tur varētu pievienot validēšanas darbības, lai ieguvumu no šīs funkcijas padarītu acīmredzamāku. Validēšana būtu vajadzīga vienmēr. Funkcija getpvar($var, $validate_option = 'string', $length = 100) vai līdzīga būtu labāka, manā uztverē. P.S. Vai tad gatavos un reālos projektos Tu liec error_log-ā arī E_NOTICE, nav tā kā bišku par traku?
laacz
2005. gada 28. aprīlī, plkst. 15:34
JV: es vispār mēģinu taisīt projektus, kuros neparādās arī E_NOTICE:) Bet par validāciju - man vienmēr ir šķitis obscure šāds validācijas veids. IMHO dotajā brīdī primārais ir datu savākšana. T.i. - ja cilvēks ir iedevis mums $_POST['kaka'], tad mums $kaka = $_POST['kaka']. Un validācija jau ir pēc lietotāja sniegto datu iegūšanas. To var taisīt kā vien vēlies. Kaut savu function validate($var, $type, ...). Validācija ir dikti nekonkrēts process, līdz ar ko unificēt kādu vienu f-ju šīm vajadzībām ir absurdi. IMHO.
JV
2005. gada 28. aprīlī, plkst. 15:43
Nu tas ir kā kurā gadījumā. Es to vairāk biju domājis savā situācijā - kur ir apmēram 5-6 dažādi mainīgo tipi, kas ir pieņemami - viss pārējais - mēslainē. Tāpēc šāda funkcija ir lietderīga - ja vajaga pamainīt kādu definīciju vai pielikt jaunu tipu - frameworks ir gatavs un atrodas vienā vietā un sadarbojas ar pārējo skriptu daļu ar vienkāršiem tīriem interfeisiem. :) Piekrītu, ka valadīcija ir nekonkrēta, bet katrā konkrētā projetā ir parastie datu formāti un plus vēl kaut kādi viņiem raksturīgi (nu tur artikuli, preču grupu numuri, rakstu nosaukumi utt.). Bet parasti tie ir daži un šādas validācijas funkcijas uzrakstīšana palīdz.
gk
2005. gada 28. aprīlī, plkst. 15:48
un kādas funkcijas lieto tipu validācijai? piemēram kaut kas līdzigs šim: http://paste.php.lv/1893
Kāds
2005. gada 28. aprīlī, plkst. 16:18
Bikuc esat pārsaspiedušies. Galīgi liekas darbības tur, kur tās nav vajadzīgas .. Un, nē, manis kodētajās aplikācijās neparādās E_NOTICE un tml. kaka.
Sm
2005. gada 28. aprīlī, plkst. 18:10
PHP PIT
PheliX
2005. gada 28. aprīlī, plkst. 18:13
nevajag salīdzināt $_POST[$key] ar getpvar($key) bet gan ar isset($_POST[$key])?$_POST[$key]:$default; Pienāk brīdis, kad apnīk to penteri visur drukāt un tās dažas liekās php darbības vairs neliekas tik būtiskas :)
Mr.Venom
2005. gada 28. aprīlī, plkst. 18:52
Es cienu savu slinkumu, tāpēc man viss saucās attiecīgi p,g,un s. Bet kā return man tomēr iet '', nevis false. Un arī "default" es nelieku, bet gan apstrādes veidu, piem echo '<input name="nick" value="'.p('nick',1).'" />'; vadīs vai nu '' ja !isset, vai vērtību, kura būs no-htmlspecialchars-ota
+
2005. gada 28. aprīlī, plkst. 19:48
Es cienu savu slinkumu vēl vairāk, tāpēc neprogrammēju PHP vispēr :)
[cx]
2005. gada 28. aprīlī, plkst. 20:01
heh :] nu man ar ir P G S :]
hmnc
2005. gada 28. aprīlī, plkst. 20:43
nu šādu funkciju izmantoju jau kādu gadu. lietoju gan stipri pielāgotāku un vieglāk izmantojamu utt. :)
kewl
2005. gada 28. aprīlī, plkst. 20:57
aha, un visas tās P, p, G, g funkcijas padara kodu tikpat lasāmu, cik mainīgie ar vārdiem $x1, $x2, $x3, .., $xn, $data un visa cita klasika.
hmnc
2005. gada 29. aprīlī, plkst. 00:16
kewl - ja tev globals = on; tad uz priekšu ;)
Kāds
2005. gada 29. aprīlī, plkst. 11:34
Lame, lame, lame :( .. bet nu ok, katrs kodē tā, kā viņam patīk labāk. Un baidos, ka katru no šiem kodētājiem ij nepārliecināt par to, kas ir tā īstā labā prakse ..
Kirils
2005. gada 29. aprīlī, plkst. 12:46
tas, ka cilveeks raksta kodu, kas iet uz globals=on, nenoziimee, ka kodaa ir caurumi. vajag tikai maaceet savu kodu.
shizo
2005. gada 29. aprīlī, plkst. 13:21
Tomeer laikam esmu aprobezhots, un patiik gramstiities gar tiiriem mainiigajiem. Pateikt godiigi? tas izklausaas peec "kaku bakstiit ar salminju". Savs vidoklis //navarochinajos// kodu panjeemienos.. sorii
DeeWee
2005. gada 29. aprīlī, plkst. 14:26
Paldies laacz'am par TIP'u ;)
Kāds
2005. gada 29. aprīlī, plkst. 15:22
Hmm .. beidzot Kirilam arī var piekrist. Ja kodētājs ir ar pieredzi (pat nevajag pieredzi, tikai vēlmi kodēt korekti, testējot kodu ar E_NOTICE un rakstot to tā, lai tie E_NOTICE nerādās), tad pat pie register_globals nekas nevar noiet greizi. (tiem, kas vēlas oponēt, skaidroju - E_NOTICE parasti aizrāda par neinicializētajiem variābļiem. Respektīvi, pat ja kāds mēģinās iebarot ko lieku caur GET vai POST, Tu to overraidosi, jo inicializēsi, anyway, to variābli. Piemēram, uzrakstot $x = 0; vai arī $people = array();
laacz
2005. gada 29. aprīlī, plkst. 15:27
Kāds, Kirils: Jāņem vērā fakts, ka register_globals defaultajā PHP instalācijā (un tas ir pareizi, jo ne visi kodējot spēj pasargāt savus skriptus no ievainojamībām) ir izslēgts.
japets
2005. gada 29. aprīlī, plkst. 15:38
piekriitu shizo..
DeeWee
2005. gada 29. aprīlī, plkst. 16:33
Baac nu ku visi kruti koderrriii :) Es no savas pieredzes saku, ka nepieshamiiba peec shaadaam ( laacz ieteiktajaam ) f-jaam vienaa noteiktaa briidii tomeer rodas. Ja Jums shaada nepiecieshamiiba nerodas, tad tas vareetu noziimeet : 1)Juusu koda gabali veel nav tik "lieli" (sarezgjiiiti utt); 2)Jums jau ir shaada f-jas realizeetas nedaudz savaadaak/liidziigi; 3)Man ir liidziigs domaashanas virziens ar laacz, un Jums nav; 4)Juusu kodaa netiek izmantoti POST GET variablji :P
P.S. Nu paklausiet tak kaadreiz arii tos pieredzeejushaakos, nevajag viemeer ar savu laapstu ... ar savu laapstu.
bubu
2005. gada 29. aprīlī, plkst. 16:51
Nu tu gan dod DeeWee, a kāpēc savu pieredzi nevar veidot no savām kļūdām un savas izpratnes? Vai tad vienmēr tikai jāklausa kāds cits un jādara tāpat kā citi tikai tāpēc, ka vot viņš ir redz kruts koderis?
z
2005. gada 29. aprīlī, plkst. 18:22
man jau reāli patīk kā šāds vienas rindiņas fragments tiek diskutēts kā lielākais 2k5 meistarības uzkodējums php!
z
2005. gada 29. aprīlī, plkst. 18:23
Un Kirils ir pats gudrākais, cepuri nost.
nz
2005. gada 29. aprīlī, plkst. 18:35
stulbs posts
nobody->bubu
2005. gada 29. aprīlī, plkst. 19:24
Varbūt tieši tāpēc, ka ir bezjēdzīgi izgudrot jaunu velesipēdu, tb taupi savu laiku un nekāp uz visiem grābekļiem pēc kārtas. Ir savs punkts uzklausīt cilvēkus, kas kodē jau ilgāku laika posmu un realizējuši sarežģītas sistēmas!
Kāds
2005. gada 29. aprīlī, plkst. 19:52
DeeWee, Laacz: Ticu, ka manis radītie projekti ir daudz apjomīgāki par Jūsu radītajiem. (piedodiet gan par nelielo iedomīgas piegaršu manis teiktajam) Anyway, pēc tik jocīgām funkcijām (gribās gan teikt metodēm, jo esmu radis kodēt "OOP stilā", tomēr) man vajadzības nav. Varbūt tikai pa retam pēc kaut kā nedaudz elītāka .. un savādāka.
Anyway, žetons Laacz'im par to, ka uzrakstīja kādu PHP tip'u. Varbūt arī nekas īpašs, bet .. atzīšos, jau ilgu laiku gaidu, kad mūsu letiņu bloggeri sāks ņemties ap un ar visādiem PHP tip`iem u.c. padarīšanām. Tā tik turēt!
z
2005. gada 29. aprīlī, plkst. 20:23
Kāds, laikam esi par ilgu nodzīvojis padomju savienībā.
BigUgga
2005. gada 29. aprīlī, plkst. 20:51
Kāds, ja reiz esi tik liels specs, kāpēc kaut ko gaidi? Kāpēc pats neraksti jeb
neblogo
?Kāds
2005. gada 30. aprīlī, plkst. 00:00
BigUgga: neuzskatu, ka nedz es, nedz citi man zināmie (t.sk. arī virtuāli) PHP koderi ir tik gudri, lai mācītu citus ... Varbūt pēc gadiem 5-10 arī sākšu blogoties. :)
CooLynX
2005. gada 1. maijā, plkst. 01:25
Kāds: Mācot citus tu beigu beigās iemācies pats to, ko tu domāji, ka tu jau zini...
Kāds
2005. gada 2. maijā, plkst. 14:02
Nav manā stilā tēlot pārgudrinieku un mācīt citus, kā dažs labs to dara ..
CooLynX
2005. gada 2. maijā, plkst. 14:27
Kāds: Tas, ka laacz kaut ko kādam "māca" nav nekas nosodāms. Tā kā tava uzpūtība ir nevietā.
ulzha
2005. gada 2. maijā, plkst. 15:18
Piesienamies Mr.Venom pamācībai. Kāda nekonsekvences velna pēc tev kā return iet ''? Un kāds prieks no p(), kurš no-htmlspecialchars-o, datu apstrādes līmenī?
cu
2005. gada 3. maijā, plkst. 00:03
man nekā piebilstama nav, bet dikti gribējās arī kaut ko pateikt.
UGGG
2005. gada 3. maijā, plkst. 13:01
NNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOORRRRRRRRRRRRRRMMMMMMMMMMMMMMMMMMMMMMĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀALLLLLLLLLLLLLLIIIIIIIIIIIIIII
smarty
2005. gada 3. maijā, plkst. 14:34
un ja taa post veertiiba ir massiivs?