Naj­ład­niej­sze sza­blony nie sprze­da­dzą się same, kiedy klient ocze­kuje, że ser­wis będzie robił coś wię­cej niż pre­zen­ta­cja sta­tycz­nej tre­ści. Tutaj potrzebne są języki server-side, a ja aku­rat spe­cja­li­zuję się w PHP (co nie prze­szka­dza mi swo­bod­nie poru­szać się w Perlu, Pytho­nie i w miarę spraw­nie radzić sobie z kodem Ruby — nie uwa­żam PHP za naj­lep­szy język i o jego wadach już kie­dyś pisałem).

Konfiguracja środowiska

Na potrzeby roz­woju apli­ka­cji mamy uru­cho­mione wła­sne mini-środowisko, kla­syczny LAMP, z PHP5 na pokła­dzie. Więk­szość kon­fi­gu­ra­cji to wierna kopia usta­wień maszyn pro­duk­cyj­nych, na któ­rych apli­ka­cje są wdra­żane, jest jed­nak kilka kwe­stii tech­nicz­nych, o któ­rych warto wspomnieć.

error_reporting
zawsze usta­wiony na naj­wyż­szy poziom, z E_STRICT włącz­nie, PHP wyba­cza za dużo, żeby pozwo­lić sobie na zigno­ro­wa­nie choćby jed­nego notice
register_globals
bez­względ­nie wyłą­czony, pole­ga­nie na tym mecha­ni­zmie to pro­sze­nie się o kło­poty (wystar­czy powie­dzieć, że spory odse­tek ata­ków na ser­wisy wynika wła­śnie ze sto­so­wa­nia auto­ma­tycz­nie reje­stro­wa­nych zmien­nych), a zasto­so­wa­nie w ten spo­sób uzy­ska­nych zmien­nych w środo­wi­sku obiek­to­wym — nikłe
magic_quotes_gpc
cóż — chcia­łoby się napi­sać, że to zło, ale jesz­cze przez jakiś czas apli­ka­cja, przy któ­rej pra­cu­jemy, będzie wyma­gać tego usta­wie­nia — brak wspar­cia dla pre­pa­ro­wa­nych zapy­tań w pierw­szych wer­sjach spra­wił, że teraz jesz­cze trud­niej byłoby je zaim­ple­men­to­wać — w naj­bliż­szym cza­sie do pro­jektu dołą­czy kod, który usuwa auto­ma­tyczne cyto­wa­nie, jeśli jest aktywne, a następ­nie cytuje ponow­nie zawar­tość tablic $_GET, $_POST, $_REQUEST i $_COOKIE

Biblioteki

PEAR
nie­wąt­pli­wie, naj­ob­szer­niej­sza biblio­teka roz­sze­rzeń języ­ko­wych dla PHP, paczki Mail i Mail_Mime sta­no­wią pod­sta­wową część więk­szo­ści z naszych aplikacji
Cake­PHP
szkie­let do szyb­kiego pro­to­ty­po­wa­nia i wdra­ża­nia apli­ka­cji o śred­nim i małym pozio­mie skom­pli­ko­wa­nia — pozwala mini­mal­nym nakła­dem kodu uzy­skać mak­si­mum funk­cjo­nal­no­ści, a przy tym posiada wygodne narzę­dzia do testo­wa­nia aplikacji
Smarty
jeden z naj­wy­god­niej­szych i naj­ła­twiej roz­sze­rzal­nych sil­ni­ków sza­blo­no­wych dla PHP, zbu­do­wany na bazie wty­czek i pozwa­la­jący na wyko­ny­wa­nie prak­tycz­nie dowol­nych ope­ra­cji na prze­ka­za­nych przez sil­nik danych — jed­no­cze­śnie chroni wnę­trze apli­ka­cji przed zło­śli­wymi zmia­nami w sza­blo­nach i opty­ma­li­zuje czas wyko­na­nia kodu przez utrzy­my­wa­nie cache sza­blo­nów w postaci skom­pi­lo­wa­nej do kodu PHP
class.jabber.php
od dłuż­szego czasu nie­roz­wi­jany, ale wciąż jeden z naj­bar­dziej wszech­stron­nych inter­fejs do sieci Jab­ber, uży­wany przeze mnie do wysy­ła­nia auto­ma­tycz­nych powia­do­mień z poziomu serwisów
Mag­pie RSS
bar­dzo wygodna klasa do par­so­wa­nia wsze­la­kiej maści kana­łów infor­ma­cyj­nych, wbrew nazwie, świet­nie sobie radzi z doku­men­tami Atom

Bezpieczeństwo kodu

ion­Cube PHP Enco­der
jeden z wio­dą­cych na rynku pakie­tów do nie­od­wra­cal­nego szy­fro­wa­nia kodu, tań­szy od kon­ku­ren­cyj­nego roz­wią­za­nia Zend Guard i ofe­ru­jący prak­tycz­nie iden­tyczną funk­cjo­nal­ność, a przy tym powszech­nie dostępny na pol­skich serwerach
eAc­ce­le­ra­tor
dar­mowy, ale znacz­nie uboż­szy w funk­cje kuzyn komer­cyj­nych narzę­dzi do zabez­pie­cza­nia kodu, wywo­dzący się z bazy kodo­wej popu­lar­nego przodka — Turck mmCa­che, jedyne dostępne narzę­dzie w przy­padku ser­we­rów home.pl

A czego wy uży­wa­cie w codzien­nej pracy? O edy­to­rach posta­ram się pody­sku­to­wać następ­nym razem, więc póki co, zostańmy przy języku.

Tech­no­rati Tags: , , , , , , , , ,