Je pro vás důležitá podpora PHP 5.2 i v příští verzi Nette 2.1?
- David Grudl
- Nette Core | 8232
Nette velmi dlouho udržuje podporu pro PHP 5.2, jehož vývoj byl sice před více než dvěma lety ukončen, ale dosud jej najdeme na takřka polovině hostingů.
Podpora této verze dnes stojí málo úsilí, protože existuje odladěný konvertor z verze PHP 5.3, nicméně by bylo zbytečné ji udržovat, kdyby ji nikdo nepotřeboval.
Anketní otázka tedy zní: vyžadujete ještě podporu PHP 5.2 i v nadcházející verzi Nette 2.1? Hlasujte http://miniaplikace.blueboard.cz/hlasovat-l4o9
- Jan Tvrdík
- Nette guru | 2595
@David Grudl: Osobně bych Nette 2.1 ještě určitě vydal s podporou PHP 5.2 a o zrušení podpory bych uvažoval od Nette 2.2. Zároveň pak můžeme zvážit, zda nezačít používat některé věci z PHP 5.4 / 5.5 a neudělat konvertor do 5.3 :)
- David Grudl
- Nette Core | 8232
Taky bych pro 2.1 zachoval podporu PHP 5.2. S tím, že verze 2.2 by následovala brzy a řešila jen separaci některých částí frameworku – ale to už bez podpory PHP 5.2.
Nad opouštěním PHP 5.3 je zatím příliš brzy uvažovat.
- Milo
- Nette Core | 1283
@DavidGrudl: Podpora pro PHP 5.2 se mi zdá sporná. Když si převedu současný dev + testy + Tester + pohackuju pár změn v testeru a spustím:
php53 -c php53.ini ..../tester.php -p php52 -c php52.ini
spousta testů failuje. Nejzávažnější jsou asi nové magic methods, protože v ObjectMixin:
# Podpora až od PHP 5.3
ReflectionProperty::setAccessible()
ReflectionClass::inNamespace()
ReflectionClass::getNamespaceName()
poslední dvě se dají snadno fixnout, ale setAccessible() ne a testy
(zejména DI) jsou pak plné chyb typu:
ReflectionException: Cannot access non-public member PhpClassType::extends
jedině asi změnit viditelnost pomocí 5.2 komentářů. Po změně na public
ale v testech chybují namespaces v anotacích při typechecking, což už
jsem nefixoval takže nevím jak se to chová dál.
Další chyby v testech:
JSON_ERROR_DEPTH # neexistuje
FatalErrorException: Cannot re-assign $this
Wrong parameters for Exception
Strict Standards: mktime(): You should be using the time() function instead
Fatal error: Cannot use object of type SplObjectStorage
Error: Undefined property: DatabaseRow::$on_delete
MemberAccessException: Call to undefined method PropertyReflection::setAccessible()
MemberAccessException: Cannot read an undeclared column "book_id" (i jiné)
Je však možné, že jsou to z Tvého pohledu všechno snadno odstranitelné chyby. Některé budou určitě false-positive, protože je test napsán bez pomyšlení na PHP5.2.
Existuje nějaká statistika počtu stažení verzí?
- petr.pavel
- Člen | 535
Pro mě není důležitá verze, ale absence jmenných prostorů. Pro moje projekty – a tipl bych si, že pro většinu projektů, na které je Nette nasazováno, jsou prefixy lepší řešení než jmenné prostory.
- MartinitCZ
- Člen | 580
@**petr.pavel**: Nespletl si se? Přide mi totiž divné, že by se programátorům libílo více prefixování, než namespaces.
- petr.pavel
- Člen | 535
@Jan Tvrdík: Přesně tak. Další argumenty zde.
Editoval petr.pavel (14. 5. 2013 13:00)
- Jan Tvrdík
- Nette guru | 2595
@petr.pavel: Na to ti nicméně stačí (pokud se
nemýlím) jeden soubor se spoustou volání class_alias
a IDE,
které to podporuje.
- David Grudl
- Nette Core | 8232
Milo napsal(a):
Když si převedu současný dev + testy + Tester + pohackuju pár změn v testeru a spustím … spousta testů failuje.
Je to z velké míry skutečně tím, že testy nejsou psány s ohledem na PHP 5.2.
Nejzávažnější jsou asi nové magic methods, protože v ObjectMixin…
Opravil jsem.
Podpora pro PHP 5.2 se mi zdá sporná.
S tím zcela souhlasím, skutečně nejde o plnohodnotnou podporu, vůle opravovat chyby v kompatibilitě s PHP 5.2 je značně menší, než třeba před rokem, kdy Nette nad PHP 5.2 běželo úplně spolehlivě.
V současných dev verzích sice v pohodě spustím sandbox i všechny příklady, ale nechci nad tím držet záruku. Když tak nad tím přemýšlím, možná bude důstojné opustit PHP 5.2 s verzí Nette 2.0.11, která je velmi kvalitní a není důvod k tvorbě nových aplikací nad starým PHP nepoužít.
- David Grudl
- Nette Core | 8232
enumag napsal(a):
Osobně neznám nikoho kdo by používal Nette 2.0 na PHP 5.2. Ve 2.0.x je určitě žádoucí podporu zachovat, ale pro 2.1.x to považuji za zbytečnou brzdu, kterou by téměř nikdo neocenil.
To je velmi zajímavý a hodnotný komentář. Koho zajímá, že těch 7 % lidí neznáš?
- Milo
- Nette Core | 1283
David Grudl napsal(a):
…možná bude důstojné opustit PHP 5.2 s verzí Nette 2.0.11, která je velmi kvalitní
Souhlasím.
Ikdyž fórum nesleduju nonstop, nevšiml jsem si, že by někdo se svým problémem uvedl verzi PHP 5.2. Za sebe mohu říci, že pokud bude Nette držet podporu verze PHP se stable Debianem, který existoval před rokem, budu maximálně spokojen.
Možná namísto verze pro PHP 5.2 generovat soubor s class_aliases(), aby si i odpůrci use klauzule přišli na své :)
EDIT: Ikdyž teď mi došlo, že lidé občas uvedou prefixed/non-prefixed verzi.
Editoval Milo (14. 5. 2013 17:05)
- David Grudl
- Nette Core | 8232
Po hodně dlouhé úvaze jsem nakonec podporu PHP 5.2 a balíčků bez namespaces odstřihl a Nette Framework 2.1 tak už bude jen pro PHP 5.3 – 5.5.