nefunkcny autoload (NNetteLoader) – nette ver. 0.8, php 5.2.6

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

problem s prefixom klucov v poli $list triedy NNetteLoader
kde metoda tryLoad dostava argument napr „Debug“ ( bootstrap.php .. Debug::enable(); )
a v tejto metode sa testuje

...
if (isset($this->list[$type])) ... // if ( isset($this->list('debug')) ...
...

pricom ale v premennej $this->list je dana trieda ulozena pod klucom „ndebug“ takze ju samozrejme nenacita a podobne aj dalsie

Update: ok beriem, ze asi chyba vznikla len v pripojenych prikladoch kde sa pouziva volanie Debug::enable(); miesto spravneho NDebug::enable() ale urcite musim vytknut nedodrzanie mennej konvencie ked nazov suboru by mal kopirovat nazov triedy obsahujucej ;).
imho bolo by to prehladnejsie.

Editoval keram (24. 1. 2009 4:21)

kravčo
Člen | 721
+
0
-

keram napsal(a):

problem s prefixom klucov v poli $list triedy NNetteLoader
kde metoda tryLoad dostava argument napr „Debug“ ( bootstrap.php .. Debug::enable(); )
a v tejto metode sa testuje

...
if (isset($this->list[$type])) ... // if ( isset($this->list('debug')) ...
...

pricom ale v premennej $this->list je dana trieda ulozena pod klucom „ndebug“ takze ju samozrejme nenacita a podobne aj dalsie

Update: ok beriem, ze asi chyba vznikla len v pripojenych prikladoch kde sa pouziva volanie Debug::enable(); miesto spravneho NDebug::enable() ale urcite musim vytknut nedodrzanie mennej konvencie ked nazov suboru by mal kopirovat nazov triedy obsahujucej ;).
imho bolo by to prehladnejsie.

Vo väčšine prípadov je správne volanie Debug::enable();.

Zrejme používaš verziu Nette s pridaným prefixom N (PHP-5.2-prefixed/), ktorá donedávna vôbec v distribúcii nebola, bola tam len kompatibilná (Nette/) + PHP-5.2/ & PHP-5.3/. Všetky príklady používajú syntax bez prefixu, verzia s prefixom vznikla zrejme preto, aby sa nette dalo použiť aj v prípade, ak by názvy Nette tried kolidovali s inými používanými knižnicami/frameworkami, prípadne pri nasadení jednotlivých súčastí Nette samostatne.


Okrem toho, je veľmi dôležité napísať pri bugreporte i číslo revízie, totiž, Nette v0.8 prešlo dodnes presne 200 OK revíziami, takže sa bez tejto informácie ťažko hľadá, kde môže byť problém.

keram
Člen | 9
+
0
-

aha, jasne vdaka, moja chyba
vybral som si prave nespravnu kniznicu nette, kedze som nespravne predpokladal
ze ver. pre: PHP-5.2 → len priamo verzia php PHP-5.2.0
PHP-5.2-prefixed → verzia php PHP-5.2.x
PHP-5.3 → verzia php PHP-5.3.0

dakujem este raz

David Grudl
Nette Core | 8153
+
0
-

pokusím se to označit srozumitelněji