Na navigaci | Klávesové zkratky

PHP 5 -> 4 converter

Vytvořil jsem nástroj pro automatický převod skriptů z PHP5 do PHP4. Slouží pro převod nových jazykových konstrukcí OOP. Nahrazuje je ekvivalentními konstrukcemi, které fungují v obou verzích.

Podporovány jsou tyto konstrukce:

Overloading se ponechává beze změny. Cílem převodníku také není nahrazovat chybějící funkce, od toho je tu třeba PEAR PHP_Compat.

Konvertor si můžete naživo vyzkoušet. Pokud narazíte na nějaké chybky, svěřte se v komentářích.

před 19 lety v rubrice PHP | blog píše David Grudl | nahoru

Mohlo by vás zajímat

Komentáře

  1. Pachollini #1

    Tak to mi tedy připadá jako skvělý nápad, určitě to někdy vyzkouším 😉

    před 19 lety
  2. martinpav #2

    avatar

    <noflame>
    Neviem, nebolo by lepsie na 4-ku zabudnut?
    </noflame>

    před 19 lety | reagoval [3] David Grudl
  3. David Grudl #3

    avatar

    #2 martinpave, Vysvětli to například všem klientům Českého Hostingu ☹

    před 19 lety | reagoval [4] martinpav
  4. martinpav #4

    avatar

    #3 Davide Grudle, Chapem. Nastastie spolupracujem s hostingom ktory ma k dispozicii 4-ku aj 5-ku a mozem si vybrat.

    OT: co sa stalo s DiBi ?

    před 19 lety
  5. Matěj Kloubek #5

    Zdravím,
    protože všichni naši zákaznící používají v této chvíli PHP4, tak by asi nebylo rozumné na 4 zapomenout.
    PHP5 na Českém hostingu bude do konce tohoto roku. Stávající i noví klienti si budou moci vybrat na jaké verzi chtějí hostovat, takže takovéto nástroje určitě přijdou vhod.

    před 19 lety | reagoval [6] David Grudl [9] tark
  6. David Grudl #6

    avatar

    #5 Matěji Kloubku, ajaj, nechtěl jsem, aby to vyznělo jako útok na Český Hosting, jehož služeb si velmi cením. Budu tedy otázku formulovat lépe: „Vysvětli to všem klientům, kteří kvůli nekompatibilitě jakékoliv části webové aplikace nebudou moci přejít na PHP5.“.

    před 19 lety
  7. honza #7

    zdravim, me by zajimalo cim jste to resil..prekladovy automat?

    před 19 lety | reagoval [8] David Grudl
  8. David Grudl #8

    avatar

    #7 honzo, rozparsuji vstup na pole tokenů funkcí token_get_all. Vytvořil jsem si jednoduchý procesor regulárních výrazů, který umí nad takovým polem pracovat (cca 100 řádků kódu) a definoval regulární výrazy pro jednotlivé konstrukce. Vlastní program (cca 300 řádků) pak už jen postupně vyhledává výskyty těchto výrazů a zaměňuje je do potřebné podoby. Ještě je tam pár triků, které řeší správné odsazení apod.

    Celé je to krátké, velice přehledné a především naprosto spolehlivé.

    před 19 lety
  9. tark #9

    #5 Matěji Kloubku, Už se těším, vlastně, už jsem se rozhodl programovat jen pro PHP5 a … nechce se mi hledat jinej hosting.. ;)

    před 19 lety
  10. T3RMiX #10

    avatar

    Pěkné, už se těším až to vyzkouším v praxi. Co takhle ve volných chvílích udělat PHP4>PHP5 :]

    před 19 lety
  11. pif #11

    avatar

    me to prijde smesne :))))) proste chapu proc si to udelal, jen se musim smat, zes byl nuceny neco takoveho udelat… Ted uz mi to vazne prijde vtipne, treba ten singleton a vubec plno dalsich vseljakych hacku ktere musis udelat. Ale jinak fajn.

    Zend studio ownz :))

    před 19 lety
  12. johno #12

    avatar

    DGX: No zaujímavý nápad, ale nejaké muchy som našiel.

    před 19 lety | reagoval [16] David Grudl
  13. Petr Krontorad #13

    avatar

    kdyz bez podpory exceptions to nejak ztraci kouzlo.. ne, ze bych vedel, jak to obejit, i kdyz by to minimalne nejak „prasacky“ asi jit mohlo.

    před 19 lety | reagoval [16] David Grudl
  14. kaifman #14

    avatar

    pouzitelnejsi by to spis bylo opacnym smerem 😉

    před 19 lety | reagoval [16] David Grudl
  15. pif #15

    avatar

    jo ta kontrola objektu :)))) to dgx asi opomnel.

    před 19 lety
  16. David Grudl #16

    avatar

    #12 johno, díky, na Type Hinting jsem úplně zapomněl, je to opravené.

    Předávání objektů referencí je asi největší oříšek celého převodu a zdánlivě neřešitelný. Používám tento trik (velmi mě mrzí, že mě nenapadl o pár let dřív), který skutečně v 99 % případů perfektně funguje, jen v převodníku byl vypnutý. Doplnil jsem jej tedy o konfiguraci a teď ho lze aktivovat, viz příklad.

    #13 Petře Krontorade, fakt mě nenapadá, jak to řešit. Ani prasácky ☹

    #14 kaifmane, opačným směrem jaksi není co převádět

    Dovolil jsem ti smazat zcela OT komentáře na téma vyhlazování fontů v Zend Studio, Radek už o tom napsal u sebe.

    před 19 lety
  17. ATom #17

    avatar

    No, ale chtělo by to verzi schopnout pracovat jako CLI aplikace, která by dokázala dávkově konvertovat celou složku. Takhle je to docela nepraktické pokaždé konvertovat 50 php souboru pojednom.

    Jinak to je fakt geniální věc.

    Mimochodem __autoload() asi taky řešit nepůjde, co?

    před 19 lety
  18. Matěj Kloubek #18

    Na Českém hostingu můžete používat PHP 5 včetně MySQL 5. Chvilku to trvalo. Do konce února je testovací provoz což neznamená, že by služba nefungovala jak má.

    před 19 lety
  19. Bjarne #19

    Uprimne nechapu proc konvertovat a jeste jen neuplne z vyssi verze do nizsi. Smysluplny by mi pripadala obracena konverze, protoze o to jde vetsinou – rozchodit starsi veci…

    před 19 lety | reagoval [20] Andrew
  20. Andrew #20

    #19 Bjarne, Jak píšeš – nechápeš to. Ten konvertor je pro lidi, kteří píší NOVÉ věci ROVNOU V PHP5, ale nechtějí od nich odstřihnout uživatelé, kteří chtějí/musí používat PHP4.

    Mimo to, PHP4 → PHP5 konvertor je logicky hloupost. Stejně by se ten kód musel projít a poupravovat.

    před 19 lety

Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.


phpFashion © 2004, 2024 David Grudl | o blogu

Ukázky zdrojových kódů smíte používat s uvedením autora a URL tohoto webu bez dalších omezení.