[BUG] Requirements Checker nekontroluje, zda je přítomno PDO
- BigCharlie
- Člen | 283
PHP 5.2, Nette 2.0 dev, zřejmě b8dac9
Při nepřítomnosti není možné nette vůbec spustit.
EDIT: Testováno na holém sandboxu, nette i pro sandbox vyžaduje PDO. Takže buď je chyba v requirements checkeru, nebo chyba v tom, že nette vyžaduje PDO i když nemusí. Přidal jsem issue na github.
Editoval BigCharlie (6. 1. 2011 16:38)
- BigCharlie
- Člen | 283
Poslal jsem to původně na github, postnu to i sem:
Jedná se o sandbox přímo ze staženého archivu, Nette pro PHP 5.2 bez prefixů. Zkusil jsem to znovu s verzí staženou dnes, totožný výsledek. Pokud nemám aktivovanou extension php_pdo.dll, dostávám hlášku „Fatal error: Class ‚PDO‘ not found in "xxx\sandbox\libs\Nette\Nette\loader.php on line 1732“.
Jedná se o třídu Nette\Database\Connection, rozšiřující třídu PDO (https://api.nette.org/…ion.php.html#25).
Nette jako takové PDO nevyžaduje.
Ano, to bych předpokládal. Proč se to tedy v mém případě chová tak, jak popisuji?
Nette\Database ano, ale nikdo tě nenutí pro model používat právě Nette\Database.
Pokud to nebylo dostatečně zřetelné, testoval jsem to i na holém sandboxu z distribuce, kde jsem nezměnil ani řádku. Takže tahle námitka odpadá.
Editoval BigCharlie (9. 1. 2011 12:18)
- BigCharlie
- Člen | 283
Tak ještě jeden zajímavý poznatek – v sandboxu je minifikovaná verze Nette. Ta tímto problémem trpí. Pokud tam nakopíruji „plnou“ verzi, problém zmizí. To by mohla být stopa, ne?
- jtousek
- Člen | 951
BigCharlie napsal(a):
Nette jako takové PDO nevyžaduje.
Ano, to bych předpokládal. Proč se to tedy v mém případě chová tak, jak popisuji?
Tím jsem měl a mysli Presentery, formuláře apod.
Nette\Database ano, ale nikdo tě nenutí pro model používat právě Nette\Database.
Pokud to nebylo dostatečně zřetelné, testoval jsem to i na holém sandboxu z distribuce, kde jsem nezměnil ani řádku. Takže tahle námitka odpadá.
Neodpadá. Sandbox možná používá Nette\Database (nevím, nekontroloval jsem to), to tě ale nenutí, abys používal i ve své aplikaci právě Nette\Database. Dříve se používalo dibi, dnes asi nejčastěji NotORM nebo Doctrine 2.
Přesto když Requirements Checker kontroluje i memcache (což většina Nette aplikací nepotřebuje) tak by PDO kontrolovat měl.
//EDIT:
BigCharlie napsal(a):
Tak ještě jeden zajímavý poznatek – v sandboxu je minifikovaná verze Nette. Ta tímto problémem trpí. Pokud tam nakopíruji „plnou“ verzi, problém zmizí. To by mohla být stopa, ne?
To není stopa, to je přesně ono. Minifikovaná verze má všechny třídy v jednom souboru takže se pokouší vytvořit třídu Nette\Database (která potřebuje PDO). Kdežto když použiješ neminifikovanou verzi, soubor kde je třída Nette\Database se nikdy nenačte, třída se nevytvoří a tudíž ani nezkouší existenci třídy PDO.
Editoval jtousek (9. 1. 2011 12:30)
- BigCharlie
- Člen | 283
Sandbox jsem kontroloval, bylo to to první, po čem jsem šel. Sandbox v distribuci Nette\Database nepoužívá, pokud vidím správně.
Tak ještě jeden zajímavý poznatek – v sandboxu je minifikovaná verze Nette. Ta tímto problémem trpí. Pokud tam nakopíruji „plnou“ verzi, problém zmizí. To by mohla být stopa, ne?
To není stopa, to je přesně ono…
Vida a obratem jsme u mého prvního příspěvku:
buď je chyba v requirements checkeru, nebo chyba v tom, že nette vyžaduje PDO i když nemusí.
S minifikovanou verzí se Nette chová tak, že PDO vyžaduje. O tom je můj první post.
- jtousek
- Člen | 951
BigCharlie napsal(a):
Vida a obratem jsme u mého prvního příspěvku:
buď je chyba v requirements checkeru, nebo chyba v tom, že nette vyžaduje PDO i když nemusí.
S minifikovanou verzí se Nette chová tak, že PDO vyžaduje. O tom je můj první post.
Jistě. Kdybys rovnou napsal, že šlo o minifikovanou verzi, bylo by to rychlejší. :)