Na navigaci | Klávesové zkratky

Translate to English… Ins Deutsche übersetzen…

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.

Komentáře

  1. Pachollini http://seky.nahory.net/ #1

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

    před 11 lety
  2. martinpav #2

    avatar

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

    před 11 lety | reagoval [3] David Grudl
  3. David Grudl http://davidgrudl.com #3

    avatar

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

    před 11 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 11 lety
  5. Matěj Kloubek http://www.cesky-hosting.cz/ #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 11 lety | reagoval [6] David Grudl [9] tark
  6. David Grudl http://davidgrudl.com #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 11 lety
  7. honza #7

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

    před 11 lety | reagoval [8] David Grudl
  8. David Grudl http://davidgrudl.com #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 11 lety
  9. tark http://fotoblog.blacksuns.net #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 11 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 11 lety
  11. pif http://www.pifik.com #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 11 lety
  12. johno http://johno.jsmf.net/ #12

    avatar

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

    před 11 lety | reagoval [16] David Grudl
  13. Petr Krontorad http://www.whoa-framework.org #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 11 lety | reagoval [16] David Grudl
  14. kaifman #14

    avatar

    pouzitelnejsi by to spis bylo opacnym smerem ;-)

    před 11 lety | reagoval [16] David Grudl
  15. pif http://www.php-weblog.com #15

    avatar

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

    před 11 lety
  16. David Grudl http://davidgrudl.com #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 11 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 11 lety
  18. Matěj Kloubek http://www.cesky-hosting.cz #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 11 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 11 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 11 lety

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