Kdyby se jednalo jen o upgrade PHP 5 -> PHP 7, byla by to pohoda. Ale většinou je třeba sáhnout i do zdrojových kódů.
Myslím, že by to většina lidí měla využít na to, aby nové projekty psali v rozumnějším jazyce a tehcnologiích, které ctí zpětnou kompatibilitu.
S přechody PHP na major verze jsou neskutečné problémy, a vždy byly. To je také důvodem, proč se používají ještě řadu let starší major verze.
PHP je čím dál větší prasečina. Když přejdete na rozumnější programovací jazyk, získáte například datový typ string a konec vyfikundací, že neustále musíte sahat do zdrojáků na základě nekompatibilních změn ve verzích.
http://php.net/manual/en/function.eregi.php http://php.net/manual/en/intro.mcrypt.php
Třeba za tohle bych bych obnovil některé středověké kratochvíle.
Přidejme k tomu za posledních 10 let script na doházeni magic quotes, na přehození mysql->mysqli/PDO jak už tu někdo zmiňoval, přeházení mcryptu do openssl.
Myslím že imbecil desetiletí patří spíš za neznalost (resp. exemplární pochopení k čemu je to dobré) pojmu "zpětná kompatibilita".
@jouda
[vtip-parafráze]
Ty jsi takový imbecil že bys v soutěži imbecilů skončil druhý - takový imbecil že bys to ani nevyhrál.
1. Imbecil patří tobě. Php 5.3 je z prehistorických dob kdy se celé weby psaly do jednoho scriptu standardně, všude a bylo to normální, i quotování se používalo všude, byl to normální standard.
2) A speciální cenu imbecila desetiletí bys měl vyhrát za to, že máváš zpětnou kompatibilitou když je podřeba odstanit funkce které jsou tak staré až jsou nebezpečné - to je tam mají nechat aby byly nebezpečné dál - obzvláště když musí mít jiný výstup? Už se prober z té diskotéky ....
@jouda
Evidentně nevíš o čem mluvíš a vybíráš si nějaké obecné důvody, to jediné je tady toxické ...
Těch 62% jsou nejspíš instance nějakých blogísků které nikdo nepoužívá, nebo málo, na hostingu 30,- za měsíc, případně to mají lidi kteří ani neví co jsou to security updaty nebo ani neví že PHP má více verzí ... Přechod z php 5.6 na 7.1 je až na vyjímky bez problému, php 7.1 umí spustit drtivou většinu věcí php 5.6 úplně normálně ...
Kdybys o tom něco věděl, tak bys věděl, že na php5.6 nepustíš kód který je napsaný stylem php7+, ovšem obráceně spustíš 99,9% kódu.
Ono je toho mnohem vic, ted si nevzpomenu na konkretni funkci, ale mam tu v phpku takovy preklapedlo jednoho soapu do druhyho soapu ... a kdy se zmenila verze phpka (a ani ne major) tak to prestalo fungovat, protoze jedna z pouzitych funci najednou strasne nutne potrebovala dalsi parametr ...
A to v pripade ze neco proste prestane fungovat ses na tom jeste zatracene dobre, protoze toho si pomerne rychle vsimnes. Ono se to taky klidne muze chovat tak, ze ti prestane fungovat nejaka cast, ktera se vola jednou za mesic ... nebo muzes dopadnou jeste lip, ze to vlastne vsechno "funguje", jenom to nedela to co by melo (trebas ti to misto sifrovani proste posila data jako text ...).
Ano, presne takhle se to dela. I kdyby tech skriptu melo byt 10. Neni to nic extremne komplikovaneho. A navic techto skriptu se da na internetu najit hory a to slo i pred 10ti lety. Ted treba najdes skripty na doplneni typehintu podle phpdoc. Nebo scripty ktere automaticky doplni vsude strict_types(ale to neni BC break).
Existuji cele projekty jako je treba PHPStan(z ceske dilny, vyuzivany celosvetove jako PHPUnit), ktery je ti schopen otestovat aplikaci na spravne predavani typu parametru pokud nemas typehinty. Samozrejme ma mnohem vice funkci a celkem myslim 7 urovni kdy je kazda vyssi uroven mnohem prisnejsi. A jeho zprovozneni? asi tak 3 minuty a do 10ti minut max. mas vysledek.
Kdo chce hleda zpusoby, kdo nechce hleda duvody. Ty ses ocividne linej nebo se ti proste zacal nabalovat technicky dluh az ses na to vys*** uplne. A zrovna to co jsi uvedl jsou celkem jednoduche veci na opravu. Jsou zde i veci, ktere se skripty dost spatne resi, nebo by doba tvorby takoveho skriptu zabrala vice casu nez rucni oprava u vsech projektu. Nicmene tech je minimum a vetsinou jsou bud minimalne pouzivane nebo jsou v kazdem projektu jednou dvakrat, jako mcrypt, password_hash atd.
PHP nemá datový typ "textový řetězec". Což je skvělé u jazyka pro web, kde se s texty pracuje velice často. To, co PHP nazývá typem "string" je ve skutečnosti binární blok, jinak řečeno vektor bajtů. Takže PHP nemá ani po dlouhých letech ani datový typ "textový řetězec", což je to co se nazývá "string".
Zcela konkretne potrebuju 5 verzi javy proto abych moh adminovat 5 ruznych krabic s javovym frontendem ... protoze v ZADNY JINY verzi javy to ... NEFUNGUJE. A dokonce uz i k minecraftu je pribalovana java ... protoze v ty aktualni, to ... nefunguje. A trebas takovej JOSM se uz nekolikrat dost prekopaval ... prave a protoze vysla nova java.
https://www.jfrog.com/jira/browse/RTFACT-15061
(podobný problém byl i s přechodem z Javy 7 na 8)
Do puntíku se nezaručuje zpětná kompatibilita nikde. Většinou se odstraňuje to, co nikdo nikdy nepoužil (např. trigraphy v C/C++, nebo slovo export v C++).
Já mám dodnes 30 let staré zdrojové kódy v C a přes 15 let staré kódy v C++ - a nemám sebemenší problém je přeložit nejnovějším kompilátorem. Jedou zcela bez problémů. Nemusím přepsat ani čárku. Tomu se říká zpětná kompatibilita.
Python udělal jednu podstatnou změnu z Pythonu 2 -> 3. Došlo k vyčištění jazyka.
PHP dělá nekompatibilní změny neustále. Ne proto, že by to bylo potřeba, ale protože autoři PHP jsou chaotická prasata, která nikdy neměla dělat programovací jazyk. Při každé major verzi PHP jsem musel přepsat či upravit zdrojové kódy. I tak je PHP dodnes špatný jazyk. Nemá datový typ "textový řetězec". Objektové programování dynamického jazyka PHP okopíroval ze statického jazyka Javy, takže to u dynamického jazyka škrtí a omezuje, protože to nesedí. Neustále se něco mění, přepisuje. V PHP 7 např. se významně mění celé zpracování chyb - což vzhledem k tomu, že programátor obvykle zpracovává chyby je na popravčí četu pro autory. Je škoda, že se PHP jazyka, tak špatnému i ve verzi 7, dává vůbec taková příležitost. Málokterý jazyk je tak špatný, nedomyšlený, chaotický jako PHP.
V php jsem psal kdysi v pravěku studentské brigády. (Tehdy se ještě nepoužívaly ty hrozné frameworky, používalo se to jako takové céčko bez pointerů na zpracování dat z formuláře a databázi.) Vzpomínám, jak starší verze předávaly data z formulářů jako globální proměnné. (Kdo tohle vymyslel, je to fakt na nobelovku za blbost...) Hojně se to tehdy využívalo a další verze to v defaultu vypnula :-))) Vzpomínám si, jak se nám tehdy na civilce rozsypal web výzkumáku.