>20 éves PHP kód életre keltése

Anno amikor tanultam php-ban programozni azt az egyik barátomtól tettem. Igazából csak néztem amit csinál, de mégis volt egy közös rendszerünk amit from scratch írtunk. Ez egy webes CMS. Akkoriban is voltak már ilyen rendszerek, de ahogyan lenni szokott nem tetszettek. Akkor az volt a legnagyobb gondunk velük, hogy mindegyik 3 hasábos design volt mint a hup.hu . Szerettünk volna egy rendszert amivel gyorsan tudunk terméket készíteni (honlap, webáruház, etc) és így pénzt is csinálni. Volt benne minden, de mindenből nagyon naiv és kezdetleges megoldás. Ettől függetlenül az ember megszereti az első gyerekét és elég sokáig használtuk saját célra. kb 15 éve senki sem nyúlt a kódhoz, így ma már le sem fut. Vagyis le sem futott, mert ma reggel elővettem és nekiestem felfrissíteni PHP 7.2 alatt (anno még php 3-nál kezdtük el és emlékeim szerint a *.php3 volt a fájlkiterjesztés mindenhol). Persze hol volt, akkor még az OOP, viszont volt benne saját template rendszer. Amit most csinálok az nem igazi refaktor, csak azokat írom át amit már kivezettek a PHP-ból. A kód pásztázása közben fogom a fejemet rendesen. PHP kóddal kevert SQL-ek egymásba ágyazva, amit ma már rég 1 db lekérdezéssel csinál egy junior is, rengeteg kód ismétlés, felesleges műveletek. Hát igen, fiatalon az ember erőből nyomja nem észből. :)

Hogy honnan is és miért ez az egész?
Elkezdtem újraolvasni a PHP fejlesztés felsőfokon-t és amikor eljutottam a smarty-hoz eszembe jutott, hogy volt valami megoldásunk nekünk is aminek az inspirációja a smarty-ból jött, de hát mi ugye azt is megírtuk magunknak. :)

Mi a célom vele?
Semmi. Ha rendbe is rakom a kódot, akkor is csak annyira, hogy menjen. Ujjgyakorlat az egész és nosztalgia. Amikor kikapcsolódni vágyom, akkor előkapom és megy a debug. Több portálnak a DB-je megvan még mindig. Így, ha a kód fut, akkor vissza lehet majd olvasnom ezeket az oldalakat a saját felületükön.

BTW:
Legtöbbször azt érzem csak telik az élet és alig fejlődöm szakmailag. Olyan érzés, hogy a fullstack-devops-mindenes-is élet (lényegében nálunk én vagyok a komplett IT is) gúzsba köt. Annyi mindenhez kell ahhoz értenem valamennyire, hogy csinálni tudjak valami értelmeset, hogy igazából nem értek semmihez érzést kelt ez bennem. Azt érzem, hogy mivel rohadt sok dolgot kell megtanulnom, csak a felszínt kapargatom amíg élek. Ez szar érzés, de beszélgetések alapján tudom, hogy ezzel az érzéssel nem vagyok egyedül. Persze most bárki mondhatná, hogy akkor miért nem merülök el egy témában, hát azért nem, mert ez okoz örömet, de sajnos ezzel együtt jár a Mekk Elek érzés. Amiért ezt leírom, az a tapasztalat, hogy egy olyan kódot megnézve amihez én speciel 16 éve nem nyúltam és akkor is csak a muszáj dolgokat javítottam benne (DEPRECATED), hozta el azt az érzés, hogy: "Dehogynem fejlődtél baszki! Rengeteget! Csak kevésnek érzed."

Hozzászólások

"Akarsz róla beszélni.?"
--
God bless you, Captain Hindsight..

Valassz egy olyan nyelvet amiben van kihivas:
Irj valamit javascriptben valamelyik mostani framework alatt.
Es nem kell 16 evet varnod, csak vedd elo ket ev mulva. Sanszos, hogy a framework sincs mar meg, vagy ujrairtak from scratch v2-nek csufolva.

De ha nem a framework, akkor valamelyik egyeb fuggosegbe torik bele a bicskad.
Pl:
https://npm.anvaka.com/#/view/2d/react-native

En mostanaban, ha idom engedi, akkor Rust-ot olvasgatok. Csak sajnos nem engedi.

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

A probléma ismerős. Ha csak pár ficsőr kell akkor inkább lekódolom, minthogy behúzzak egy újabb függőséget. Volt idő amikor alapszinten megtanultam kb 10 programozási nyelvet. Egy hete néztem újra át Java-t középhaladói szintig. Sohasem írtam semmi használhatót benne és motiválva sem vagyok a migrálásra. Persze unalomból néha lecserélném a PHP-t, de hamar rájövök, hogy amire nekem kell nincs jobb, legalábbis nekem.

Amikor azt írod, nincs vele célod: nem igaz. Magad közlöd később, hogy látod mennyit fejlődtél. Ez 1-2 hétig még tartani fog, majd rájössz: igazolva. Keress a hype cycle környékén dolgokat. A PHP 3 -> 7 portolás nem biztos hogy az. :-)

Amúgy respect, a retrospektív dolgok hasznosak. Egy common mistakes vagy egy porting guide blog lehet hasonló örömmel töltene el. Secu leak memoár lesz? Az is tetszene;-)

go, rust, Ruby, esetleg ccc?:-)

Maga az alkalmazás számomra egy eszköz amit én magam fejlesztek, ennek mellékterméke, hogy a dolog engem is fejleszt, aminek kifejezetten örülök. Nem igazán készülök programozónak, noha jelenleg is ezt tanulom. A programozói tudást, mint eszközt használom a céljaimhoz. Röviden: magamnak fejlesztek egy ERP-t ami helyettem dolgozik. Egy belső igény miatt szeretném ezt jól csinálni, ezért is tanulom.

Secu leak van benne gazdagon. Illetve kb csak az van. Botrányos. :)

Szia, pár gyors komment:

Egyrészt jó sok időd van, de megértelek, hogy ezt csinálod, tényleg jó gyakorlat.
Én már akkor PHP 7.3.9-re írnám, nem 7.2-re.
A másik, hogy van a php.net-en egy változások listája és mi az, amit változtattak.

Egyik út az lenne, hogy PHP3-ról PHP4 kompatibilisre javítod a kódot, majd:

https://www.php.net/manual/php4.php

Migrating from PHP 4 to PHP 5.0.x
https://www.php.net/manual/en/migration5.php

Majd:

Migrating from PHP 5.0.x to PHP 5.1.x
Migrating from PHP 5.1.x to PHP 5.2.x
Migrating from PHP 5.2.x to PHP 5.3.x
Migrating from PHP 5.3.x to PHP 5.4.x
Migrating from PHP 5.4.x to PHP 5.5.x
Migrating from PHP 5.5.x to PHP 5.6.x
Migrating from PHP 5.6.x to PHP 7.0.x
Migrating from PHP 7.0.x to PHP 7.1.x
Migrating from PHP 7.1.x to PHP 7.2.x
Migrating from PHP 7.2.x to PHP 7.3.x

Ha igazán kemény vagy, PHP 5.3-tól csinálsz PHPUnit tesztet is hozzá, és úgy migrálod, hogy az összes teszt lefusson :)
Bónuszként írsz valami CMS benchmark-ot, és az összes verzión futtatod, és látni fogod, hogy gyorsul... :)

Sakk-matt,
KaTT :)

Na ennyi időm nincs.

Ezek a lépések vannak első körben, amelyek szükséges és elégséges feltételei a működésnek:
1. Kivezetett függvények helyettesítése.
2. Átállás mysql_*-ről, mysqli_*-re (később PDO)
3. Hozzáadnia szükséges $_GET, $_POST, $_REQUEST, $_SERVER, $GLOBALS, $_SESSION változókat

Ezzel a három lépéssel már működik minden. Azután jöhet/jöhetne egy refaktor, de csak akkor, ha minden megy már:
1. Átállás PDO-ra (ezért nem egyből ezzel kezdem, mert akkor sokáig nem látok output-ot)
2. OOP: létrehozni a szükséges objektumokat, csökkenteni több lépésben a kódismétlést.
3. Átépíteni a Controll részt, mert az nagyon elavult/kezdetleges
4. A template rendszert jobban szétkapni objektumokra, mert most kb minden oldalnak van saját leírása, ezzel csökkene a kód és gyorsulhatna az új oldalak elkészítésének ideje
5. Biztonságosabbá tenni a rendszert több ellenőrzéssel, adatvalidálással
...
n

Refaktorálni a végtelenségig...

És legvégül ezért php 7.2:


oregon@zenbook:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
oregon@zenbook:~$ php -v
PHP 7.2.19-0ubuntu0.18.04.2 (cli) (built: Aug 12 2019 19:34:28) ( NTS )

mysql-t tudsz telepíteni php7 alá is. Ha csak a felélesztés a cél. Ha a cél az átírás, akkor persze ok, bár nem nagy kihívás replacelni a mysql_-t mysqli_-re.

A többire pedig túlparázod. Legyen belőve a hibakiírás noreice és warning nélkül. Kezdd el futtatni és javítsad a megjelenő hibákat.

Aztán ha nagyon nem menne meg fehér oldalak jönnek fel, akkor engedélyezzed a warningokat is és azt is csekkold.
Ennyi...

azért érdemes a 7.3-at választani mert abban már alapból támogatott a sodium és ez sokat segíthet a crp részen.
[új] - No rainbow, no sugar - [új]

a 15 éves könyv helyett lehet érdemes lenne valami aktuálisat olvasni:) ez pl ad egy egész jó irányt, hogy miként lenne érdemes manapság: https://phptherightway.com

Untakozol ?
Amint olvastam az ugrott be, smarty aztan irtad is kesobb,
BTW reszt en sem irhattam volna szebben, beteszem ezt legkozelebb motivacios levelnek :D

Esetleges kód nyitáson nem gondolkodtál?

Főleg PHP vonalon szeretek ilyesmivel foglalkozni. Nem csak abból lehetne tanulni, hogy te nekiállsz az egésznek és migrálod, hanem ha más is segít, akkor azt is látod más miképpen csinálná a dolgokat, ami szerintem hasznos tud lenni.

---
"Errors are red
My screen in blue
Someone help me
I've deleted Sys32"