{"language":"sk","path":"/sluzby/php-vyvoj/","switchPath":"/en/services/php-development/","kind":"service","tags":["code","wordpress","system"],"title":"PHP vývoj na mieru a záchrana starého kódu | Šimon Cihra","metaDescription":"Vývoj v PHP na mieru: vlastné pluginy, serverová logika a migrácia starého kódu na moderné PHP 8.3. 19 rokov skúseností, cena vopred.","kicker":"PHP vývoj a modernizácia","h1":"Potrebujete v PHP niečo, čo hotový plugin nevyrieši?","lead":"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.","intro":["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 na diaľku 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. Ceny sú vrátane DPH. Menšia úprava správania začína od 25 €, nový plugin na mieru od 390 €, väčší modul alebo záchrana staršej aplikácie stojí viac. 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."],"sections":[{"title":"Vlastné pluginy a moduly na mieru","paragraphs":["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."],"points":["Plugin robiaci presne jednu vec","Vlastné pravidlá výpočtov a validácií","Administrácia zrozumiteľná pre obsluhu"]},{"title":"Záchrana a modernizácia starého kódu","paragraphs":["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."],"points":["Prechod na PHP 8.3 po krokoch","Odstránenie nefunkčných konštrukcií","Composer a rozdelenie na časti"]},{"title":"Serverová logika, ktorej sa dá veriť","paragraphs":["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."],"points":["Validácia, oprávnenia a transakcie","Presné počítanie peňazí a dátumov","Auditný záznam dôležitých operácií"]},{"title":"Migrácie údajov a spojenie s WordPressom","paragraphs":["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."],"points":["Opakovateľné migračné skripty","Prehľad prenesených a chybných záznamov","Pluginy, REST endpointy a WP-CLI"]},{"title":"Odovzdanie kódu, ktorý prevezme aj niekto iný","paragraphs":["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ť odo mňa. Ak si o rok firma vezme vlastného vývojára, má prevziať projekt bez toho, aby začínal odznova."],"points":["Čitateľná štruktúra a poznámky","Testy tam, kde chyba stojí najviac","Popis spustenia a nasadenia"]}],"faqTitle":"Časté otázky o PHP vývoji","faq":[{"question":"Koľko stojí vývoj v PHP na mieru?","answer":"Menšia úprava správania začína od 25 €, nový plugin na mieru od 390 €, väčší modul stojí viac. Presnú cenu vrátane DPH dostanete vopred písomne. Pri cudzom projekte odhad spresním po prezretí kódu."},{"question":"Aký je rozdiel oproti stránke o Laraveli?","answer":"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ý."},{"question":"Prevezmete projekt po inom vývojárovi?","answer":"Á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."},{"question":"Zvládne sa prechod na PHP 8.3 bez odstávky?","answer":"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."},{"question":"Píšete aj testy a dokumentáciu?","answer":"Áno, primerane rozsahu. Pri kritickej logike, výpočtoch a integráciách sa testy oplatia, pri jednoduchom plugine by boli zbytočne drahé. Krátky popis spustenia, nasadenia a nastavení odovzdávam vždy."}],"relatedTitle":"Súvisiace služby","related":[{"label":"Všetky služby","href":"/sluzby/","description":"Prehľad webových služieb a možností spolupráce."},{"label":"PHP / fullstack developer na voľnej nohe","href":"/sluzby/php-fullstack-developer/","description":"Externá posila do tímu agentúry alebo firmy: PHP, Laravel, WordPress, React."},{"label":"WordPress multisite","href":"/sluzby/wordpress-multisite/","description":"Jedna inštalácia, viac webov a domén pod jednou správou."},{"label":"Bedrock WordPress","href":"/sluzby/bedrock-wordpress/","description":"Composer, mu-pluginy a nasadenia z gitu pre udržateľný WordPress."},{"label":"Sage a Blade","href":"/sluzby/sage-a-blade/","description":"Moderné WordPress témy s čistou štruktúrou a komponentmi."}],"ctaTitle":"Máte v PHP niečo, čo treba napísať alebo zachrániť?","ctaText":"Napíšte, o aký projekt ide a na akej verzii PHP beží. Pozriem si ho a poviem, čo je naliehavé a čo počká.","ctaLabel":"Prebrať PHP projekt"}