classNameScanner 0.0.1

Door Richard van Velzen, 18 jaar geleden, 3.413x bekeken

Aangezien ik een redelijke vreemde structuur voor m'n klassen heb qua bestanden heb ik niet genoeg aan een standaard autoloader.
Ik had dus een scanner nodig die m'n include path doorloopt om een map te maken van klassenaam => bestand, en hier is het resultaat.

Het is gebaseerd op de tokenizer (wanneer niet), aangezien die beter kan bepalen dan ik waar een klassenaam staat, en het is ook nog eens verrekkes snel. :-)

Opmerkingen, commentaar, enzovoorts hoor ik graag. :-)

PS: Voorbeeld staat onderaan.

Gesponsorde koppelingen

PHP script bestanden

  1. classnamescanner-001

 

Er zijn 10 reacties op 'Classnamescanner 001'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
RvW Of toch niet
RvW Of toch niet
18 jaar geleden
 
0 +1 -0 -1
begrijp ik het goed.
en class om classes aan te roepen ?:P
Richard van Velzen
Richard van Velzen
18 jaar geleden
 
0 +1 -0 -1
Nee, een functie om een PHP bestand te scannen naar class- en interfacenamen. :-)
Youri van Weegberg
Youri van Weegberg
18 jaar geleden
 
0 +1 -0 -1
Ben ik nou blind, of staat er geen voorbeeld onderaan?
Richard van Velzen
Richard van Velzen
18 jaar geleden
 
0 +1 -0 -1
Vanaf regel 50...
Robin de Vries
Robin de Vries
18 jaar geleden
 
0 +1 -0 -1
het voorbeeld is bijna groter dan de class zelf
Richard van Velzen
Richard van Velzen
18 jaar geleden
 
0 +1 -0 -1
... Waar zie jij een klasse? :')
Robin de Vries
Robin de Vries
18 jaar geleden
 
0 +1 -0 -1
de categorie is classes(A)
Toby hinloopen
toby hinloopen
18 jaar geleden
 
0 +1 -0 -1
ik gebruik gewoon de autoload functie die meerdere mappen doorzoekt naar alle bestanden met *.[classname].php en include ze allemaal.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function __autoload($classname) {
    //voor het geval dat __autoload handmatig geroepen wordt met een ongeldige naam...
    if(!preg_match('/^[_a-z][a-z0-9_]*$/i',$classname)) {
        user_error('Call to invalid classname "'.$classname.'"');
    }

    
    $objectclassfilename = D_CLASSES.'object.'.$classname.'.php';
    if(file_exists($objectclassfilename)) {
        require_once($objectclassfilename);
    }

    
    $staticclassfilename = D_CLASSES.'static.'.$classname.'.php';
    if(file_exists($staticclassfilename)) {
        require_once($staticclassfilename);
    }

    
    $settingsfilename = D_SETTINGS.$classname.'.php';
    if(file_exists($settingsfilename)) {
        require_once($settingsfilename);
    }
}

?>
Richard van Velzen
Richard van Velzen
18 jaar geleden
 
0 +1 -0 -1
Heel leuk, maar dat is in mijn structuur gewoon niet mogelijk. Ik heb vaak meerdere klassen in een bestand, waardoor het dus onmogelijk te bepalen wordt aan de naam van een klasse in welk bestand het staat.

Daarnaast zou mijn oplossing alsnog sneller zijn omdat het een lookup table betreft, dus er hoeven geen bestandssysteemqueries gedaan te worden. :]
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Marc Cools
Marc Cools
17 jaar geleden
 
0 +1 -0 -1
Hi,

Ik heb een class versie gemaakt van dit script.
http://www.phphulp.nl/php/scripts/4/1705/

Marc

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

Inhoudsopgave

  1. classnamescanner-001

Labels

  • Geen tags toegevoegd.

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.