ugrás a tartalomhoz

C square - PHP autoloader

Anonymous · 2006. Nov. 20. (H), 22.53
PHP osztály autoloader gyorstárazással
 
1

Magyarázzátok el!

Anonymous · 2006. Nov. 21. (K), 14.32
Sziasztok!

Elolvasva a pár mondatos leírást és a forrásban levő kommenteket is, még mindig nem lettem sokkal okosabb.
Mi ez tulajdonképpen? Miért/hogyan javít a PHP teljesítményén a gyorstárazás?

Hogyan kell használni? Gondolom az édeskevés (kipróbáltam és tényleg) hogy beteszem a projekt gyökerébe a letölthető egyetlen fájlt.
Megpróbáltam beinklúdolni, le is futott és készített egy cache fájlt, de abban csak egy üres tömb definíció szerepelt. Ennyi már elég a boldogsághoz? Nehezen hiszem.

Nyilván én vagyok nagyon tájékozatlan, kérlek segítsetek!

N0r3i
2

a lényeg a lényeg ;)

TeeCee · 2006. Nov. 22. (Sze), 17.01
Először is: nem próbáltam ki gyakorlatban, mert PHP5 még nincs, amire dolgozzak. (Ha minden jól megy, a téli szünetben nem lesz szünetem, hogy legyen cserébe PHP5-öm és ellenőrizgethetem a kódokat... :)

A PHP5 tud olyat, hogy Automatikusan betöltődő objektumok. EZ a leírás szerint azt takarja, hogy "Te definiálhatsz egy __autoload nevű függvényt ami automatikusan meghívódik minden esetben, amikor egy olyan próbálsz meg osztályt használni, ami még nincs definiálva. Ezt a függvényt meghívva a programmotor egy utolsó esélyt ad az osztály betöltésére, mielőtt a PHP hibát eredményez."

Ezzel egy utolsó esélyed lesz a hibakezelésre, vagy akár loggolhatod a hibát, ahogy jónak látod. Az említett fájlt include-olnod kell, és cserébe nem kell az objektumaidat tartalmazó fájlokat behúznod, csak használnod őket. Mert: Ha használod és nincs, az __autoload() (amit a fájl definiál) megnézi a kessében, hogy melyik fájlt kell behúznia hozzá, (ha nincs, akkor első alkalommal megkeresi) és boldogan élsz, amíg meg nem halsz... :)

Szép is belegondolni, hogy a debuggoláshoz használatos objektumok miatt nem kell 'fölösleges' fájlokat behúzogatni, majd élesítés során végignyálazni és kiszedegetni azokat. Meg a fájlok elején sem kell fél kilóméternyi include_once, require_once halmot kerülgetni :)

Már alig várom, hogy kipróbálhassam...
3

Működik :-)

Anonymous · 2006. Nov. 23. (Cs), 12.43
Köszönöm szépen a hasznos információt, rögtön ki is próbáltam, és valóban működik.
Most még ugyan csak egyetlen osztályom van az éles projectben, de gyorsan összedobtam még párat próbából, és valóban bekerültek a cache tömbbe és az include-ok elhagyása után is szépen betöltődtek. Persze a c_square.php kell, de ez akkor is csak egy.

Így már tetszik a dolog, azt hiszem, fogom is használni.

Köszönöm!

N0r3i