Dinamikus objektumok autocompletion-ja?
Üdv!
Lehet, hogy olyat keresek, ami nem létezik....
Van egy szép nagy, modulos felépítésű portálmotorom, amiben az objektumok dinamikusan jönnek létre, szépen, mindig amelyikre szükség van. Vannak olyan objektumok, amelyekhez értelem szerűen elég sokat nyúlok, és zavar, hogy nem tudom elérni a metódusait az IDE auto-kiegészítésével :(
Nem találkoztam ilyen 'object mapping' vagy hasonlóval egyetlen IDE alatt sem. Létezik? Eddig általam használt PHP-re (is) alkalmas szerkesztők: MC :D, UltraEdit :), Zend, phpED, Komodo.
Egy példa, hogy mit is szeretnék:
Van pl. a $GLOBALS['dblayer'] objektumom, aminek van egy execute metódusa.
Persze ezt be kell gépelni: $GLOBALS['dblayer']->execute('XXX'); (persze van 4* hosszabb metódusnév is, amit könyebben elfelejtek, ha egy darabig nem nyúlok ahhoz a modulhoz, megaztán könnyű elírni bármit...)
Milyen szép is lenne, ha:
1.) A "$GLO"-t beírva a modulok objektumai megjelennének (kiválaszt, ENTER)
2.) Utána a "->"-t írva megjelennének a metódusai, és esetleg a paraméterei (a paramétereket általában nem szoktam közvetlen használni, ezért ezt tudom mellőzni)
Megjegyezném (hangsúlyoznám), hogy mivel a fájlokat is dinamikusan tölti be a rendszer, ezért természetesen, amikor egy PHPfájlban módosítok, akkor egy darab include/require nincs benne a rendszer objektumaira vonatkozóan, és akkor még a dinamikus névből előállított példányosításról nem is beszéltem...Gondoltam egy olyanra, hogy a fejlesztői verzióban egy include lenne minden
oldal elején, és ott minden fájlt behúzna és objektumokat példányosítana...
Persze ez elég rossz ötlet, lassítana mindent kivéve a fejlesztést, már ha működik, mert még nem próbáltam.
Úgy hiszem, erre nincs megoldás, de hátha csak pesszimistább vagyok, mint kellene...
Várom a válaszokat, előre is köszönöm:
TeeCee, alias Szügyi Tamás :o)
■ Lehet, hogy olyat keresek, ami nem létezik....
Van egy szép nagy, modulos felépítésű portálmotorom, amiben az objektumok dinamikusan jönnek létre, szépen, mindig amelyikre szükség van. Vannak olyan objektumok, amelyekhez értelem szerűen elég sokat nyúlok, és zavar, hogy nem tudom elérni a metódusait az IDE auto-kiegészítésével :(
Nem találkoztam ilyen 'object mapping' vagy hasonlóval egyetlen IDE alatt sem. Létezik? Eddig általam használt PHP-re (is) alkalmas szerkesztők: MC :D, UltraEdit :), Zend, phpED, Komodo.
Egy példa, hogy mit is szeretnék:
Van pl. a $GLOBALS['dblayer'] objektumom, aminek van egy execute metódusa.
Persze ezt be kell gépelni: $GLOBALS['dblayer']->execute('XXX'); (persze van 4* hosszabb metódusnév is, amit könyebben elfelejtek, ha egy darabig nem nyúlok ahhoz a modulhoz, megaztán könnyű elírni bármit...)
Milyen szép is lenne, ha:
1.) A "$GLO"-t beírva a modulok objektumai megjelennének (kiválaszt, ENTER)
2.) Utána a "->"-t írva megjelennének a metódusai, és esetleg a paraméterei (a paramétereket általában nem szoktam közvetlen használni, ezért ezt tudom mellőzni)
Megjegyezném (hangsúlyoznám), hogy mivel a fájlokat is dinamikusan tölti be a rendszer, ezért természetesen, amikor egy PHPfájlban módosítok, akkor egy darab include/require nincs benne a rendszer objektumaira vonatkozóan, és akkor még a dinamikus névből előállított példányosításról nem is beszéltem...
// Csöppnyi ízelítő, miről is beszéltem
require_once(DIR.'mod_'.$name.'/classes/'.$name.'.php');
$this->modules[$name] = new $name;
$GLOBALS[$name] = &$this->modules[$name];
// Igaz, itt a portal objektumon belül a moduloknál lesz a modul példánya,
// de kényelmi/értelmi okok miatt a $GLOBALS alá is berakok egy referenciát...
oldal elején, és ott minden fájlt behúzna és objektumokat példányosítana...
Persze ez elég rossz ötlet, lassítana mindent kivéve a fejlesztést, már ha működik, mert még nem próbáltam.
Úgy hiszem, erre nincs megoldás, de hátha csak pesszimistább vagyok, mint kellene...
Várom a válaszokat, előre is köszönöm:
TeeCee, alias Szügyi Tamás :o)
phpeclipse
Jövő látó, vagy gondolat olvasó programot szeretnél?
Ami megoldás lehet, egy olyan program, ami kigyűjti az összes tagfüggvényt és tagváltozót és ezeket mind felajánlja neked. (Ilyen nem tudom van-e, de mintha az eclipse tudna valami hasonlót)
pp
Csak a gondolatolvasás jöhet szóba!
Tudom én, hogy nem tudja az IDE kitalálni, hogy mit szeretnék. phpEd alatt van directory mapping, ha pl. közvetlen SFTP-vel akarom egy szerverre felrakni a helyileg is mosított fájl(oka)t. Na így pl. meg lehetne adni, hogy én biztosan a $GLOBALS['dblayer']-t $dblayer -nek szeretném használni. Azért a változók nagy részéről tudom, hogy milyen objektum :)
HAHÓ! Mindenki, aki még nem írt compo-t a web.conf-ra! Ilyet csináljon nekem :D
Tudom, mindenki a saját logikája szerint építi fel programjait, de nem hinném, hogy én vagyok az egyetlen, aki dinamikusan hozna létre objektumokat. Mindenki mindig mindent bepötyög?
Köszi PP a választ, úgy hiszem erre úgyis csak a haladóbbak fognak reagálni a kérdés bonyolultsága miatt.
Sajnos tisztában voltam azzal, amit mondtál - persze lehet, hogy nem voltam eléggé érthető a kérdés feltevésekor!
Köszönöm mégegyszer, várom a Többieket, akik még hozzá(m) tudnak tenni valamit!
(és örülünk, hogy megcsináltátok a weblabort...)
Baj...
Egyébként ha OOP-t használsz, akkor nem kellene szép lassan leszokni a GLOBALS használatáról? Az OOPnek pont az lenne a lényege, hogy amit nem kell, azt ne lásd, és egyéb, iskolákban tanult paradigmák...
Szóval sok sikert, ha találsz, oszd meg velünk.
(Tényleg, mi volt vele, nap közben kaptam egy forbidden errort, eléggé meghökkentem...)
köszi...
proclub:
Biztosan én magyaráztam félre valamit, ha Te sem érted :)
Én nem azt szeretném, hogy a program kitalálja, hogy a GLOBALS['dblayer'], avgy a $dblayer milyen objektum. Én azt szeretném, hogyha MEGMONDHATNÁM az IDEnek, hogy ezek a változók milyen objektumok lesznek. (Ez neveztem én el látatlanban object mapping-nek, persze lehet, hogy van ilye ficsör és az mást takar, de nekem ez tűnt logikusnak - esetleg még variable mapping) Ekkor, az IDE már tudja, hogy melyik válto milyen objektum és akkor a metódusait, is fel tudná kínálni...
Ami az OOP-t illeti: VALÓBAN, hadilábon állok vele. Mivel a programozás nagy részét még az OOP-s szemlélet előtt (illetve azt mellőzve) kezdtem el elsajátítani, ráadásul autodidakta módon, ezért szeretem inkább funcionálisan elhatárolni az objektumaimat. Mindjárt írok is egy e-mailt, amiben megkérdezlek, Te hogyan oldanád meg máshogy a modulok elérését 'szebben'...
Köszi!
Eclipse
Szóval a phpeclipse megcsinálja neked azt, hogy a létrehozott projectek alatt használt összes (tag)függvényt eltárolja és szerkesztésnél a kódkiegészítő felajánlja neked (mindenféle válogatás nélkül az összeset).
pl: $GLOBALS['blabla']-t mindenképpen be kell írnod, de utána már működik.