trešdiena, 2009. gada 14. oktobris

No pieredzes programmējot php

Tā nu ir sanācis, ka sagudroju padalīties sakrātajā php kodēšanas pieredzē. Nepretendēju uz absolūto patiesību, bet ... ir pamats uzskatīt, ka tās nav galigas muļķības.
Tātad pamata lietas, ko derētu ievērot programmējot kaut ko daudz maz nopietnu:

  1. Šis gan attiecas ne tikai uz php. Pirms ķerties pie kodēšanas pēc iespējas smalkāk izplāno, ko  un kā tavs kods darīs. Kodējot bez iepriekš izstrādāta plāna tavs php kods visticamāk būs ļoti nepārskatāms, kas traucēs kļūdu atrašanu vai funcionalītes uzlabošanu;

  2. Raksti kodu tā, lai tas būtu pēc iespējas universālāks. Pamatā tas nozīmē, globālo mainīgo izsaukšanu izmantojot $_SERVER, $_POST, $_GET u.t.t. pat ja izstrādes vidē pietiek ar $username tā vietā lai lietotu $_POST['username'] . php tāpat vispirms meklēs mainīgo $username starp skriptā definātajiem lielumiem, tikai pēc tam pie globālajiem mainīgajiem. Turklāt šādi var izvairīties no $username vērtības nodošanu ar $_GET['username'], kaut gan ievadīts tiek formā ar metodi post kas jau ir drošības caurums.

  3. Pret mainīgajiem no $_GET[] masīva izturies ar neuzticību. Ja mainīgais nav int, tad veic pilnu vērtības pārbaudi, lai mainīgais nesaturētu '"', ' vai vēl kādu citu simbolu ( escape character ) , kas var mainīt koda izpildes gaitu. Caur $_GET[] vislabāk padot tikai int tipa mainīgos, jo lai nodrošinātu mainīgā nekaitīgumu pietiek ar
    $var=(int)$_GET['int_var'] ;

  4. Failiem, kuri tiek iekļauti ar include, paplašinājumu nosaki tādu, ko webserveris neuzskata par izpildāmiem;

  5. php.ini konfigurācijas failā ir iespēja norādīt failu, kurš tiks iekļauts pec noklusējuma. Izmanto to, lai definētu tādu jūtīgu lietu, kā piekļuves datus datu bāzei u.t.t. un project-wide mainīgos;

  6. Rūpīgi apsver, kādu informāciju glabāt datu bāzē un kādu teksta failos. Iemesli:
    # vēršanās pie datu bāzes aizņem vairāk laika, kā neliela faila nolasīšana;
    # failā dati var glabāties jau, kā php kods, kuru atliek tikai iekļaut, vaicājums no datu bāzes jebkurā gadījumā būs jāapstrādā, pirms iegūtās vērtibas var lietot tālāk kodā;
    # ja pilnīgi visi dati glabājas datu bāzē, projekts var pārstāt strādāt datu bāzes nepieejamības gadījumā;
    # pie pietiekoši lielas slodzes/ apmeklējuma, katrs "ietaupītais" datu bāzes vaicājums samazina slodzi serverim(iem) un palielina darbības ātrumu;

  7. Jebkuru handli (handle), vienalga datu bāzes vai faila, "turi atvērtu" pēc iespējas īsāku laiku. Datu bāzes gadījumā - pieslēgumu skaits datubāzei ir galīgs skaitlis; failā var rakstīt tikai viens process. Neaizmirsti aizvērt datu bāzes pieslēgumu, lai nebūtu jāpiedzīvo "Too many connections!" .


Šim ierakstam pietiks.
Jebkuru handli (handle), vienalga datu bāzes vai faila, "turi atvērtu" pēc iespējas īsāku laiku. Datu bāzes gadījumā - pieslēgumu skaits datubāzei ir galīgs skaitlis; failā var rakstīt tikai viens process. Neaizmirsti aizvērt datu bāzes pieslēgumu, lai nebūtu jāpiedzīvo "Too many connections!" .

Nav komentāru:

Ierakstīt komentāru