[PHP] autoloading functions

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, het volgende:

php kent autoloading van objecten, maar stel nu dat ik geen classes heb, maar een redelijk collectie functies, netjes gescheiden dmv aparte files. 1 functie per file.
nu zoek ik naar autoloading van de functies, inladen van deze bieb aan functies duurt namelijk langer dan als ik de functies auto kan inladen als deze ingeladen worden.

zelf heb een oplossing: object overloading met __call, kijken welke functie er aangeroepen wordt, file check, requiren, aanroepen met opgegeven parameters, en foilla: autoloading van functies via een class.
zelf vind ik het een redelijke oplossing, maar is toch smerig om het via een class te doen.

Zelf met een zoektochtje vond ik niet iets passend. eigenlijk, ik vond helemaal niets over mijn vraag.
zou het anders/beter kunnen ?

Acties:
  • 0 Henk 'm!

  • Peter
  • Registratie: Januari 2005
  • Laatst online: 13-09 17:10
Er zijn plannen om een algemene __call magic-function te implementeren in PHP, een beetje naar het idee van __autoload, maar dit is nog niet concreet. Verwacht wordt dat dit pas rond PHP 6 klaar is.

Op dit moment is de classe echt de enige mogelijkheid. Waarom duurt het inladen eigenlijk zo lang, staat alles in z'n eigen bestand ofzo?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De functies staan gegroepeerd in aparte files.
Geen idee hoeveel precies, maar enkel het nodige inladen is altijd sneller dan alles inladen.

Dus afwachten op nieuwere versie, en voorlopig __class gebruiken.... :)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Je zou, voordat je je code in productie zet, natuurlijk wat tooling over je code kunnen halen en daardoor voor elke pagina een custom lijstje includes kunnen genereren. Werkt een stuk efficienter dan dit voor elk request dynamisch te bepalen, maar gaat wel ten koste van de mogelijkheid tot 'live in de productiecode pielen'.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz, dat is nog geen eens zo'n heel gek idee... hmz, ook vrij makkelijk te maken denk ik zo...

Maar ik zat te denken: stel dat ik het autloaden van functies via een class doe, dit kost tijd om de file te checken etc. Wellicht is dit aan het einde van de rit wel langzamer dan gewoon de hele mik te includen...
daar moet ik toch eens een benchmarkje overheen halen :)

ennuh, ga je eens wassen, vooral je handen! beetje provoceren tot editten in een live omgeving :)

Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Autoload is sowieso langzamer dan handmatig includen, dus daar ben je snel over uit. Autoload zou ik ook alleen gebruiken als je veel classes hebt, bijvoorbeeld van een externe library oid, en tijdens het ontwikkelproces zelf - scheelt veel tijd.

Maar ik zou je structuur iets aanpassen, zet bijvoorbeeld gelijksoortige functies gewoon in een bestand - de overhead van een X-aantal functies inladen lijkt mij lager dan de overhead van een X-aantal bestanden includen. Maar dat is een gok.
Pagina: 1