Jak se dostat k datům RobotLoaderu

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

Potřeboval bych se dostat k datům RobotLoader-u ale $RobotLoader->list je private jde to něják jinak? (Potřebuju získat názvy všech presenterů)

jasir
Člen | 746
+
0
-
Environment::getCache('Nette.RobotLoader');
Patrik Votoček
Člen | 2221
+
0
-

Čistější způsob neexistuje??? Tahat to rovnou z cache me nepříjde zrovna čísté… :-(

jasir
Člen | 746
+
0
-

Mno, já jsem si ten RobotLoader::$list upravil na public. Ale čistotou to taky zrovna nevoní. Asi smolík.

pmg
Člen | 372
+
0
-

Čisté by asi bylo, kdybys to vůbec nepotřeboval. Neměl bys to potřebovat. Mohu mít intimní dotaz? K čemu to potřebuješ?

jasir
Člen | 746
+
0
-

Tak já mám třeba poměrně dost upravený profiler debugeru (colophon) + výchozí template controlu a to tak, že si zobrazuji různé informace o aktuálním presenteru a controly se v debug módu vykreslují s oteviratelným menu, kde vidím proměnné controlu a další informace. Také obsahují přímé linky na editaci zrojových kódů presenteru/controlu a šablon. Musím tedy nějak zjistit, že MujSuperControl je /components/hehe/MujSuperControl.php a podobně u presenterů.

Editoval jasir (10. 8. 2009 15:19)

pmg
Člen | 372
+
0
-

:-O

jasir
Člen | 746
+
0
-

pmg napsal(a):

:-O

Přijde ti to jako blbost? Já nějak nevěděl jak na to jinak a ten RobotLoader se přímo nabízel ;-)
Nebo prostě když mám funkci:

<?php
class DebugHelper {
	public static createPresenterInformationPanel(Presenter $presenter) {
	...
	}
}
?>

Mohu nějak z té instance $presenter zjistit snadno kde je zdrojový kód definující třídu presenteru?
Podobně pro Controly

Editoval jasir (10. 8. 2009 15:21)

pmg
Člen | 372
+
0
-

Jen mě pozitivně překvapila myšlenka přímé editace souborů. Pro debugovací účely se mi to řešení nezdá nečisté, problém vidím jen v tom, že třídu teoreticky nemusí načítat RobotLoader.

Možná by to ještě šlo přes ReflectionObject.

$file = $presenter->getReflection()->getFileName();
jasir
Člen | 746
+
0
-

pmg napsal(a):

Jen mě pozitivně překvapila myšlenka přímé editace souborů. Pro debugovací účely se mi to řešení nezdá nečisté, problém vidím jen v tom, že třídu teoreticky nemusí načítat RobotLoader.

To je pravda, ale já se na RobotLoadera spoléhám, přijde mi super :-)

Možná by to ještě šlo přes ReflectionObject.

$file = $presenter->getReflection()->getFileName();

Perfektní, to musím vyzkoušet. Děkuji. Nějak jsem čuchal že tudy by to mohlo jít.

Edit: Jo, šlape to. Perfektní, odstranil jsem další závislost na vlastních pokřivení Nette ;-)

Musím říct, že třeba taková blbůstka že bluescreen má klikatelné názvy souborů ve výpise chyb a exception a otevře IDE na souboru a řádce s chybou ušetří dost času.

Jinak mám ještě rozdělanou věc, která by měla na jedné stránce vytvořit přehled
presenterů / controlů / (modelů?) v projektu, ale jde to pomalu, low priority :-(.
Jestli to někdy dodělám do zveřejnitelného stavu (teď je to takový proof of koncept, sám před sebou se nestydím to používat), dám to do extras.

Editoval jasir (10. 8. 2009 16:13)

pmg
Člen | 372
+
0
-

Tak to se těším… Potřeboval bych nějaký ten čas ušetřit, abych měl čas psát básničky na fórum.

jasir
Člen | 746
+
0
-

pmg napsal(a):

Potřeboval bych nějaký ten čas ušetřit, abych měl čas psát básničky na fórum.

Div se světe,
jak to Nette,
jenom kvete.
Php už nesere tě.
...tolik.

Sorry za OT ;-)

pmg
Člen | 372
+
0
-

Nejmenuje se tvůj brácha náhodou Hynek? :-)

Patrik Votoček
Člen | 2221
+
0
-

pmg napsal(a):

Čisté by asi bylo, kdybys to vůbec nepotřeboval. Neměl bys to potřebovat. Mohu mít intimní dotaz? K čemu to potřebuješ?

Tak třeba pro automatizované generování menu… Každej můj presenter který je přístupný v admin části je napojen na IMyPresenter který má jedu jednou metodu a tou je loadMenu… Která do „globální“ proměné nadefinuje celou strukturu menu v administraci a předá ji komponentě která to z toho vykreslí… (Samozdřejmě všechno cachuju aby to bylo rychlé)

Patrik Votoček
Člen | 2221
+
0
-

jasir napsal(a):

Musím říct, že třeba taková blbůstka že bluescreen má klikatelné názvy souborů ve výpise chyb a exception a otevře IDE na souboru a řádce s chybou ušetří dost času.

To chci taky… :-D

jasir
Člen | 746
+
0
-

vrtak-cz napsal(a):

jasir napsal(a):

Musím říct, že třeba taková blbůstka že bluescreen má klikatelné názvy souborů ve výpise chyb a exception a otevře IDE na souboru a řádce s chybou ušetří dost času.

To chci taky… :-D

Je to založené upraveném bluescreen.phtml, které generuje linky ve tvaru phpeditor://.... Pak se musí v OS nastavit, aby schéma phpeditor:// vedlo na skript, který zpracuje tu url (která je v zásadě jenom base64 coded název souboru + cesta) a otevře IDE se souborem na dané řádce. Ten skript se musí napsat pro konkrétní IDE (já používám PhpEd). Čili moje řešení je závislé na Windoze a na PhpED. Pokud by stále byl zájem, můžu sem postnout patch na bluescreen.phtml a řešení pro Windoze+PhpED.

Ještě teda ftipné je, že PhpEd je tak debilní editor, který sám neumí skočit na danou řádku v otevíraném souboru (to snad umí i notepad ;). Čili tam mám ve skriptu ještě děsivý hack, za který už se teda stydím, kterej pošle editoru klávesy CTRL+G (Go to line) a pak číslo řádku a enter :-). Bohužel, PhpEd lidé nereagují příliš na feature requesty … ;-)

Editoval jasir (10. 8. 2009 17:06)

Patrik Votoček
Člen | 2221
+
0
-

PhpEd používam taky takže no problema…

o5
Člen | 416
+
0
-

vrtak-cz napsal(a):

pmg napsal(a):

Čisté by asi bylo, kdybys to vůbec nepotřeboval. Neměl bys to potřebovat. Mohu mít intimní dotaz? K čemu to potřebuješ?

Tak třeba pro automatizované generování menu… Každej můj presenter který je přístupný v admin části je napojen na IMyPresenter který má jedu jednou metodu a tou je loadMenu… Která do „globální“ proměné nadefinuje celou strukturu menu v administraci a předá ji komponentě která to z toho vykreslí… (Samozdřejmě všechno cachuju aby to bylo rychlé)

mohl by si sem hodit nastrel toho jak to funguje? nedokazu si to moc predstavit a umi to taky treba zjistit vsechny renderXYZ() metody presenteru?

jasir
Člen | 746
+
0
-

vrtak-cz napsal(a):

PhpEd používam taky takže no problema…

Poslal jsem ti to do mailu.

Vyki
Člen | 388
+
0
-

jasir napsal(a): Pokud by stále byl zájem, můžu sem postnout patch na bluescreen.phtml a řešení pro Windoze+PhpED.

Ahoj, to by bylo super kdybys to sem umístil, nedávno jsem něco podobného řešil, bohužel zatím ne s příliš dobrým výsledkem. Rád si rozšířím obzory :o)

Editoval Vyki (12. 8. 2009 10:42)

hrach
Člen | 1838
+
0
-

jasir napsal(a):

Je to založené upraveném bluescreen.phtml, které generuje linky ve tvaru phpeditor://.... Pak se musí v OS nastavit, aby schéma phpeditor:// vedlo na skript, který zpracuje tu url (která je v zásadě jenom base64 coded název souboru + cesta) a otevře IDE se souborem na dané řádce. Ten skript se musí napsat pro konkrétní IDE (já používám PhpEd). Čili moje řešení je závislé na Windoze a na PhpED. Pokud by stále byl zájem, můžu sem postnout patch na bluescreen.phtml a řešení pro Windoze+PhpED.

Nemohl by si to zverejnit? Mel bych taky zajem… :)

jasir
Člen | 746
+
0
-

hrach napsal(a):

jasir napsal(a):

Je to založené upraveném bluescreen.phtml, které generuje linky ve tvaru phpeditor://.... Pak se musí v OS nastavit, aby schéma phpeditor:// vedlo na skript, který zpracuje tu url (která je v zásadě jenom base64 coded název souboru + cesta) a otevře IDE se souborem na dané řádce. Ten skript se musí napsat pro konkrétní IDE (já používám PhpEd). Čili moje řešení je závislé na Windoze a na PhpED. Pokud by stále byl zájem, můžu sem postnout patch na bluescreen.phtml a řešení pro Windoze+PhpED.

Nemohl by si to zverejnit? Mel bych taky zajem… :)

No, já bych to klidně zveřejnil, ale je to založené na přepsání bluescreen.phtml (bohužel šablona se nedá vybrat programově) tak nechci rozšiřovat „bad practices“. Navíc je to fakt hack co se týče toho PhpEd. Ale šoupnu ti to na mail.

Editoval jasir (12. 8. 2009 11:00)

Kenn
Člen | 110
+
0
-

Nápodobně :-)

jasir
Člen | 746
+
0
-

Kenn napsal(a):

Nápodobně :-)

Na jakej email?

Vyki
Člen | 388
+
0
-

Mě prosím na vykuka@gmail.com :o)

Kenn
Člen | 110
+
0
-

jasir napsal(a):

Na jakej email?

kenn@opicinoviny.cz

nějak se s tím poperu, díky moc

jasir
Člen | 746
+
0
-

Vyki, Kenn:

Máte to v mailu.

Editoval jasir (12. 8. 2009 11:16)

Patrik Votoček
Člen | 2221
+
0
-

o5 napsal(a):

mohl by si sem hodit nastrel toho jak to funguje? nedokazu si to moc predstavit a umi to taky treba zjistit vsechny renderXYZ() metody presenteru?

Vydrž prosím do pátku…