PHP vývoj a modernizácia
Potrebujete v PHP niečo, čo hotový plugin nevyrieši?
Píšem PHP 19 rokov. Robím vlastné pluginy, serverovú logiku na mieru a zachraňujem starý kód, ktorý firmu drží na neaktuálnej verzii PHP.
PHP je jazyk, v ktorom beží väčšina slovenského webu, a zároveň jazyk, ktorý sa za posledné roky výrazne zmenil. Moderné PHP 8.3 má typy, výnimky, atribúty, výkonný runtime a nástroje na statickú kontrolu kódu. Rozdiel oproti kódu písanému pred desiatimi rokmi je obrovský, no veľa firiem stále prevádzkuje aplikácie, ktoré túto zmenu nikdy neabsolvovali. Prejavuje sa to postupne: hosting prestane podporovať starú verziu, bezpečnostné aktualizácie skončia, každá zmena trvá dlhšie a nikto si netrúfa siahnuť na časť, ktorá funguje. Práve tu robím najviac práce. Buď píšem novú funkcionalitu na mieru, alebo existujúci kód dostávam do stavu, v ktorom sa dá bezpečne rozvíjať.
Som freelance vývojár z Popradu, pracujem remote-first a klient hovorí priamo so mnou, nie cez projektovú vrstvu. Za 19 rokov som v PHP písal e-shopy, registračné systémy pre organizátorov konferencií, predplatné portály, fakturačné riešenia, B2B portály aj vlastné pluginy pre WordPress. Sadzba je 40 € za hodinu vrátane DPH. Menší plugin alebo úprava správania býva 4 až 12 hodín, väčší modul alebo záchrana staršej aplikácie sa počíta na desiatky hodín. Rozsah vždy odhadnem až po tom, ako si kód pozriem, pretože pri cudzej aplikácii je čestný odhad možný len s otvoreným projektom pred sebou.
01
Vlastné pluginy a moduly na mieru
Keď hotový plugin robí osemdesiat percent toho, čo potrebujete, zvyšných dvadsať percent býva drahšie ako vlastné riešenie. Píšem pluginy, ktoré robia presne jednu vec dobre: vlastný typ obsahu, výpočet ceny podľa vašich pravidiel, špecifický formulár s napojením, úprava správania košíka alebo administračná obrazovka pre vašich ľudí. Vlastný kód má tú výhodu, že nenesie balast pre tisíce iných webov, neťahá si vlastný marketingový panel a nepridá zrazu funkciu, ktorú ste si neobjednali. Zároveň sa dá aktualizovať vtedy, keď to dáva zmysel vám.
- Plugin robiaci presne jednu vec
- Vlastné pravidlá výpočtov a validácií
- Administrácia zrozumiteľná pre obsluhu
02
Záchrana a modernizácia starého kódu
Aplikácia na PHP 5 alebo 7 je bezpečnostné aj prevádzkové riziko, no prepis od nuly býva zbytočne drahý. Postupujem preto po krokoch. Najprv zistím, čo aplikácia naozaj robí a ktoré časti sa používajú. Potom odstránim konštrukcie, ktoré v novej verzii nefungujú, doplním kontrolu vstupov a chybové stavy a až následne riešim štruktúru. Kde je to možné, prevediem kód na správu závislostí cez Composer a rozdelím ho tak, aby sa dal testovať po častiach. Výsledkom je aplikácia bežiaca na podporovanej verzii PHP, s ktorou sa dá pracovať aj o dva roky.
- Prechod na PHP 8.3 po krokoch
- Odstránenie nefunkčných konštrukcií
- Composer a rozdelenie na časti
03
Serverová logika, ktorej sa dá veriť
Serverová časť rozhoduje o tom, či sa dá výsledkom veriť. Preto pri práci riešim veci, ktoré na obrazovke nevidno: validáciu vstupov, oprávnenia, transakcie pri zápise, správne zaokrúhľovanie pri peniazoch, prácu s časovými pásmami a stavy, keď dvaja ľudia menia to isté v rovnakej chvíli. Dôležité operácie zapisujem do auditného záznamu, aby sa dalo dohľadať, kto a kedy zmenu urobil. Presne tieto detaily bývajú príčinou chýb, ktoré sa objavia až pri väčšom objeme a hľadajú sa najhoršie.
- Validácia, oprávnenia a transakcie
- Presné počítanie peňazí a dátumov
- Auditný záznam dôležitých operácií
04
Migrácie údajov a spojenie s WordPressom
Veľkú časť PHP práce tvoria migrácie: prechod na novú verziu systému, presun údajov zo starej databázy, zmena štruktúry obsahu alebo zlúčenie dvoch systémov do jedného. Migračné skripty píšem tak, aby sa dali spustiť opakovane a aby po nich vznikol prehľad, čo prešlo a čo sa nepodarilo previesť. Keďže veľká časť projektov beží na WordPresse, PHP prácu často robím práve v ňom, teda v podobe pluginov, úprav v téme, vlastných REST endpointov a WP-CLI príkazov pre pravidelné úlohy. Rovnaké zásady platia aj pre samostatné aplikácie bez WordPressu.
- Opakovateľné migračné skripty
- Prehľad prenesených a chybných záznamov
- Pluginy, REST endpointy a WP-CLI
05
Odovzdanie kódu, ktorý prevezme aj niekto iný
Kód píšem s tým, že ho raz bude čítať niekto ďalší. Znamená to zrozumiteľné názvy, oddelené zodpovednosti, poznámky pri rozhodnutiach, ktoré nie sú zjavné, a krátky popis, ako sa projekt spúšťa a nasadzuje. Pri väčších celkoch pridávam testy na miesta, kde by chyba stála najviac, a statickú kontrolu kódu, aby sa časť problémov ukázala ešte pred nasadením. Cieľom nie je závislosť na mne. Ak si o rok firma vezme vlastného vývojára, má prevziať projekt bez toho, aby začínal odznova.
- Čitateľná štruktúra a poznámky
- Testy tam, kde chyba stojí najviac
- Popis spustenia a nasadenia
?
Časté otázky o PHP vývoji
Koľko stojí vývoj v PHP na mieru?
Menší plugin alebo úprava správania býva 4 až 12 hodín, väčší modul 15 až 40 hodín. Pri sadzbe 40 € za hodinu vrátane DPH tak ide o rozsah zhruba od 160 €. Pri cudzom projekte odhad spresním po prezretí kódu.
Aký je rozdiel oproti stránke o Laraveli?
Laravel je konkrétny framework a hodí sa na väčšie aplikácie s vlastným dátovým modelom a rolami. Táto stránka je o PHP ako takom: o vlastných pluginoch, serverovej logike a zásahoch do existujúceho kódu, ktorý žiadny framework nepoužíva alebo používa iný.
Prevezmete projekt po inom vývojárovi?
Áno, robím to bežne. Najprv si pozriem kód, verzie, hosting a zálohy a poviem, čo je naliehavé a čo počká. Až potom navrhujem rozsah. Prepis od nuly odporúčam len vtedy, keď je preukázateľne lacnejší než ďalšie opravy.
Zvládne sa prechod na PHP 8.3 bez odstávky?
Vo väčšine prípadov áno. Zmeny pripravím a otestujem mimo produkcie, prechod naplánujeme na tichejší čas a spätná cesta zostáva pripravená. Odstávka tak býva otázkou minút, nie hodín.
Píšete aj testy a dokumentáciu?
Áno, primerane rozsahu. Pri kritickej logike, výpočtoch a integráciách sa testy oplatia, pri jednoduchom pluginu by boli zbytočne drahé. Krátky popis spustenia, nasadenia a nastavení odovzdávam vždy.
Máte v PHP niečo, čo treba napísať alebo zachrániť?
Napíšte, o aký projekt ide a na akej verzii PHP beží. Pozriem si ho a poviem, čo je naliehavé a čo počká.
Prebrať PHP projekt