[BUG] Requirements Checker nekontroluje, zda je přítomno PDO

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
BigCharlie
Člen | 283
+
0
-

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)

jtousek
Člen | 951
+
0
-

Nette jako takové PDO nevyžaduje.

Nette\Database ano, ale nikdo tě nenutí pro model používat právě Nette\Database.

redhead
Člen | 1313
+
0
-

Memcache také není potřeba, přesto je to v checkeru kontrolováno.

jtousek
Člen | 951
+
0
-

V tom případě OK. Přesto je to pochopitelné, že to nekontroluje. Nette\Database je nová věc.

David Grudl
Nette Core | 8228
+
0
-

Sandbox mi normálně bez PDO běží.

BigCharlie
Člen | 283
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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ší. :)

BigCharlie
Člen | 283
+
0
-

Opraveno Davidem, k dnešnímu dni se již chyba neobjevuje.