Autoload class

Door Synaps Framework, 13 jaar geleden, 5.075x bekeken

Met deze class kun je altijd gebruik maken van al je classes.

Pas de variable $aFolders aan. Dit zijn de folders welke deze class doorzoekt. Hierin moet dus de class staan wil je er gebruik van maken.

Initialiseren van de class in je index kan zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
AutoLoad::initialise();
?>


De class schrijft een cache systeem zodat je voorkomt dat deze class elke keer alle folders moet doorzoeken. Hij controleert dus eerst of de class voorkomt in het cache bestand. zoja, dan required hij deze. zonee (nieuwe class gemaakt en geupload?), dan loopt hij de folders langs en schrijft hij de nieuwe cache.

Note: Class namen moeten overeen komen met bestandsnamen!!

Changelog
- 15 mei: Cache file verwerkt via serialize & unserialize

Gesponsorde koppelingen

PHP script bestanden

  1. AutoLoad.php

 

Er zijn 17 reacties op 'Autoload class'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Yea Rupie
Yea Rupie
13 jaar geleden
 
Ik weet niet of dit zo handig is om te gebruiken. Is het niet gewoon sneller om alleen de classes die je nodig hebt te gebruiken?

Ook heb je bij sommige classes een toevoeging nodig, zoals User($id);


13 jaar geleden
 
0 +1 -0 -1
Dump het dan op pastebin o.i.d.


13 jaar geleden
 
Aangezien ik m'n vorige berichtje niet kan editten:
Dump het dan op pastebin o.i.d.
Volgens mij kan je beter serialize gebruiken i.p.v. dat php geklooi wat je nu doet in writecache, ik denk dat het daardoor een heel stuk netter wordt. Natuurlijk moet je dan nog wel unserialize in de constructor gebruiken, maar dat is zo gepiept.
Volgens mij klopt het ook niet helemaal, en slikt de UBB parser het daarom ook niet helemaal (waardoor je dus weer verkeerde opmaak krijgt).
Synaps Framework
Synaps Framework
13 jaar geleden
 
0 +1 -0 -1
Yea Rupie, ik denk dat jij even op spl_autoload_register moet kijken, want je snapt het principe hiervan niet.

@Karl, zal serialize implementeren, word de cache ook mooier van en waarschijnlijk ook minder gevoelig voor fouten.
Jelmer -
Jelmer -
13 jaar geleden
 
0 +1 -0 -1
serialize is inderdaad mooier, en gemakkelijker. Voor jouw aanpak, een apart PHP bestand maken, is ook wel wat te zeggen. Zo zou dit sneller zijn wanneer je APC hebt geïnstalleerd doordat het PHP bestand dan in het geheugen blijft zitten, terwijl je bij serialize altijd het bestand van de harde schijf zou moeten ophalen en inlezen. (Maar als dat je argument is, kan je het nog sneller maken door apc_fetch en apc_store te gebruiken)

Anyway, mocht je voor de PHP-bestand-maken-manier blijven gaan, dan kan je ook eens kijken naar var_export. Een soort serialize, maar dan naar iets wat PHP uit kan voeren.
Jelmer -
Jelmer -
13 jaar geleden
 
Is het niet handiger om __construct gewoon private te houden, en je hele class static te maken? Al je methods en al je variabelen zijn al static, dus waarom maak je nog een instantie aan?
Synaps Framework
Synaps Framework
13 jaar geleden
 
0 +1 -0 -1
Volgens mij is de constructor private ;P
M Ypma
M Ypma
13 jaar geleden
 
0 +1 -0 -1
Ik heb betere implementaties gezien, nadeel van deze class is ook dat je nu een gebruiker dwingt om de configuratie van de te doorzoeken mappen in de class zelf vereist terwijl je toch liever een methode wenst aan wie ik vertel wat de te doorzoeken mappen zijn.
Synaps Framework
Synaps Framework
13 jaar geleden
 
0 +1 -1 -1
Nou speciaal voor jou dan M Ypma.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
public static function setMaps ($aFolders) {
    if( is_array($aFolders) && count($aFolders) > 0 ) {
        self::$aFolders = $aFolders;
    }
}

?>


Je kunt toch ook gaan mierenneuken he? Ik heb keuzes gemaakt omdat deze class uit mijn framework komt. Ik geloof niet dat iemand dit direct zal implementeren maar ook een paar aanpassingen zelf zal maken.
M Ypma
M Ypma
13 jaar geleden
 
0 +1 -0 -1
Niet zo lichtjes aangebrand Pepijn, het was niet bedoeld als mierenneuken. Ik vond het serieus een gemis, zeker als je een script wilt delen met anderen, dan zou ik in ieder geval voor een complete implementatie kiezen. No hard feelings verder.
Richard van Velzen
Richard van Velzen
13 jaar geleden
 
0 +1 -0 -1
En wat nou als ik meerdere klassen in hetzelfde bestand heb?

Dan heb je aan een volledigere scanner iets meer: http://www.phpfreakz.nl/library.php?sid=27240
Synaps Framework
Synaps Framework
13 jaar geleden
 
0 +1 -0 -1
Dan moet je inderdaad voor die kiezen. Echter heb ik nooit meerdere classes in mijn bestanden staan.
An d
An d
13 jaar geleden
 
Hoi,
wie kan mij gidsen op php.net/spl ?
ik begrijp (auto~ , pre) load (ing)
als een middel om clients' irritatie te minderen
dat favoriete bladzijden 2 al naar de client gaan.

bibliotheek spreekt mij wel aan maar volg de link en skip.

Daag, J├│h An42.

ps werd afgeleid door over dpc 2010 op php.net blz 1, bovenaan.

antoon-phphulp.freehostia.com


13 jaar geleden
 
0 +1 -0 -1
@all de leest: Wat voor lijpe onzin blaat jij?
Synaps Framework
Synaps Framework
13 jaar geleden
 
0 +1 -0 -1
Stop nu eens met die drugs all de leest =[
Sebastiaan Blaas
Sebastiaan Blaas
13 jaar geleden
 
Was er mis met de standaard autoload als in :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
function __autoload($class_name) {
    require_once $class_name . '.php';
}
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Richard van Velzen
Richard van Velzen
13 jaar geleden
 
0 +1 -0 -1
Wat dacht je van de onmogelijkheid om andere libraries die hun eigen autoloading-functionaliteit implementeren via spl_register_autoload te gebruiken?

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. AutoLoad.php

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.