← Uz sākumu

PHP tip

2005. gada 28. aprīlī, 45 komentāri

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');

Tu atbildi augstāk redzamajam komentāram. Atcelt

Gravatar 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.

Gravatar 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; }

Gravatar bubu

2005. gada 28. aprīlī, plkst. 14:47

uff, komatu par daudz ielikās..

Gravatar laacz

2005. gada 28. aprīlī, plkst. 14:48

bubu: Dikti daudz jāraksta. Nekādi ne simple :)

Gravatar BigUgga

2005. gada 28. aprīlī, plkst. 15:15

man identiskas taadas f-jas saucas get() un post()

veel biki mazaak jaaraksta :)

Gravatar 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.

Gravatar M

2005. gada 28. aprīlī, plkst. 15:16

Piekrītu bubu piemērs ir unversālāks

Gravatar 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.

Gravatar 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?

Gravatar 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.

Gravatar 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.

Gravatar 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

Gravatar 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.

Gravatar 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 :)

Gravatar 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

Gravatar +

2005. gada 28. aprīlī, plkst. 19:48

Es cienu savu slinkumu vēl vairāk, tāpēc neprogrammēju PHP vispēr :)

Gravatar [cx]

2005. gada 28. aprīlī, plkst. 20:01

heh :] nu man ar ir P G S :]

Gravatar 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. :)

Gravatar 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.

Gravatar hmnc

2005. gada 29. aprīlī, plkst. 00:16

kewl - ja tev globals = on; tad uz priekšu ;)

Gravatar 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 ..

Gravatar 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.

Gravatar 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

Gravatar DeeWee

2005. gada 29. aprīlī, plkst. 14:26

Paldies laacz'am par TIP'u ;)

Gravatar 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();

Gravatar 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.

Gravatar 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.

Gravatar 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?

Gravatar 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!

Gravatar z

2005. gada 29. aprīlī, plkst. 18:23

Un Kirils ir pats gudrākais, cepuri nost.

Gravatar 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!

Gravatar 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!

Gravatar z

2005. gada 29. aprīlī, plkst. 20:23

Kāds, laikam esi par ilgu nodzīvojis padomju savienībā.

Gravatar 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?

Gravatar 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. :)

Gravatar 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...

Gravatar 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 ..

Gravatar 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ā.

Gravatar 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ī?

Gravatar cu

2005. gada 3. maijā, plkst. 00:03

man nekā piebilstama nav, bet dikti gribējās arī kaut ko pateikt.

Gravatar UGGG

2005. gada 3. maijā, plkst. 13:01

NNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOORRRRRRRRRRRRRRMMMMMMMMMMMMMMMMMMMMMMĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀĀALLLLLLLLLLLLLLIIIIIIIIIIIIIII

Gravatar smarty

2005. gada 3. maijā, plkst. 14:34

un ja taa post veertiiba ir massiivs?