Svaki put kada na LinkedInu objavim nešto o PHP-u, isti komentari se ponavljaju. "Zar to još netko koristi?" "Preseli se na React." "PHP je mrtav." A onda pogledam statistike i vidim da PHP pokreće tri četvrtine cijelog weba, uključujući WordPress, Facebookovu infrastrukturu i Wikipediju.
Ironično je da isti ljudi koji govore da je PHP mrtav svaki dan posjećuju stranice koje se vrte na njemu. Ali hajdemo dalje od anegdota i pogledajmo konkretne razloge zašto sam za webdesignbytomi.com svjesno odabrao PHP i statični HTML umjesto Reacta.
Kontekst: što moja stranica treba raditi
Prije nego usporedimo tehnologije, bitno je razumjeti kontekst. Moja stranica treba:
- Prikazati informacije o uslugama i paketima
- Omogućiti kontaktiranje putem forme i chata
- Objavljivati blog članke (poput ovog)
- Rangirati se na Googleu za lokalne pretrage
- Učitavati se brzo na svim uređajima
Nijedna od ovih stvari ne zahtijeva kompleksnu JavaScript aplikaciju. Nema real-time dashboarda, nema drag-and-drop editora, nema stotina interaktivnih komponenti. To je, suštinski, digitalna brošura s kontakt formom i blogom.
I upravo tu leži ključna poanta cijelog članka: odabir tehnologije mora odgovarati problemu koji rješavate, a ne trendu koji vidite na Twitteru.
Brzina učitavanja: gdje PHP dominira
Ovo je možda najvažniji argument za prezentacijske stranice. Pogledajmo što se dogodi kada posjetitelj otvori stranicu izgrađenu na različitim tehnologijama.
PHP/statični HTML pristup
Korisnik šalje zahtjev. Server odmah vraća gotov HTML. Preglednik ga prikazuje. Kraj priče. Moja stranica se učitava za ispod jedne sekunde, a ukupna veličina svih resursa je oko 150 KB uključujući slike.
React pristup (SPA)
Korisnik šalje zahtjev. Server vraća prazan HTML s jednim <div id="root">. Preglednik preuzima JavaScript bundle (tipično 300-500 KB samo za framework). JavaScript se izvršava. React renderira komponente u DOM. Tek tada korisnik vidi sadržaj. A ako treba podatke s API-ja, to je još jedan krug čekanja.
A Next.js i SSR?
Zagovornici Reacta će reći: koristi Next.js koji ima server-side rendering. I u pravu su, Next.js rješava mnoge probleme klasičnog React SPA-a. Ali razmislite o tome: uzeli ste React (koji je client-side framework), dodali mu server-side rendering (što PHP radi od samog početka), i sada imate kompleksniji sustav koji radi isto što PHP radi iz kutije. Plus trebate Node.js server, build pipeline i značajno više znanja za održavanje.
SEO: Google voli ono što može pročitati
Za stranicu koja MORA rangirati na Googleu, ovo je ključno pitanje. Kada Google crawler dođe na PHP stranicu, odmah vidi sav sadržaj. Schema.org oznake, meta tagovi, heading struktura, tekst. Sve je tu od prvog trenutka.
Kada dođe na React SPA? Vidi prazan <div> i mora pokrenuti JavaScript da bi pročitao sadržaj. Google može renderirati JavaScript, ali to zahtijeva dodatne resurse i nije uvijek pouzdano. Neke stranice čekaju danima na indeksiranje jer je Googleov render budget ograničen.
Za stranicu koja se treba rangirati za izrada web stranica Zagreb ili web dizajn Krapina, zašto bih uopće riskirao s client-side renderiranjem?
Troškovi hostinga: matematika je jasna
Moj cjelokupni stack je Hetzner VPS za 4.5 eura mjesečno, Nginx i PHP 8.3. Na tom serveru vrti se i ova stranica i nekoliko drugih projekata. Godišnji trošak: oko 55 eura.
Za usporedbu, Node.js aplikacija zahtijeva process manager (PM2 ili slično), više memorije, pažljivije upravljanje procesima. Platforme poput Vercela ili Netlifya nude besplatne razine, ali uz ograničenja. Za ozbiljniji promet, cijene brzo rastu na 20-50 eura mjesečno ili više.
Za malu tvrtku koja razmišlja o troškovima, PHP hosting je jednostavno jeftiniji. A s hostingom i domenom koji su uključeni u moje pakete, klijenti nemaju nikakvih dodatnih troškova.
Kompleksnost i dependency hell
Ovo je argument koji se rijetko spominje u marketinškim člancima, ali svatko tko je radio s Node.js ekosustavom zna o čemu govorim.
Prosječan React projekt ima stotine, ponekad tisuće dependency paketa. Svaki od njih može imati sigurnosne ranjivosti, nekompatibilnosti ili jednostavno prestati s održavanjem. Pokušajte otvoriti React projekt star dvije godine i pokrenuti npm install. Velika je šansa da ćete naletjeti na deprecation upozorenja, sigurnosne ranjivosti i peer dependency konflikte.
PHP datoteka napisana 2020. godine? Kopirate je na server i radi. Nema build koraka, nema package managera, nema transpilacije. To je ogromna prednost za dugoročno održavanje.