PHP Class Map Generator mpAutoloaderClassMap

Beschreibung

Das Tool mpAutoloaderClassMap ist in der Lage, vordefinierte Verzeichnisse/Dateien eines PHP-Projektes nach vorhandenen Klassenbezeichnungen (Klassennamen, Klassennamen von abstrakten Klassen und Interfacenamen) zu suchen und eine sogenannte Class Map Konfigurationsdatei aus den Ergebnissen zu erstellen, welches dann für eine Autoloader-Implementation verwendet werden kann.

Das Lösen von Abhängigkeiten (auf Dateisystemebene), das Laden von benötigten PHP-Dateien mit Klassendeklarationen kann durch verschiedene Wege erreicht werden.

1. PSR-0:
Das Mappen des Klassenbezeichnungen auf eine Datei im Dateisystem.

// example:
Location:  /path/to/your/lib/Com/Foobar/Helloworld.php
Classname: Com_Foobar_Helloworld

// usage:
// a.) first you have to register a autoloader which maps
// Com_Foobar_Helloworld to Com/Foobar/Helloworld.php within
// /path/to/your/lib/
// b.) then you can use something like
$foo = new Com_Foobar_Helloworld();
// or
echo (class_exists('Com_Foobar_Helloworld')) ? 'yes' : 'no';

2. Includes:
Über include/require Statements, bevor die Klasse verwendet wird. Das ist die altbekannte Vorgehensweise und funktioniert weiterhin gut. Jedes Mal die Datei einbinden, wenn man es benötigt.

// example:
Location:  /path/to/your/lib/Com/Foobar/Helloworld.php
Classname: Com_Foobar_Helloworld

// usage:
require_once('/path/to/your/lib/Com/Foobar/Helloworld.php');
$foo = new Com_Foobar_Helloworld();
// or
if (!class_exists('Com_Foobar_Helloworld')) {
    require_once('/path/to/your/lib/Com/Foobar/Helloworld.php');
    echo 'Now Com_Foobar_Helloworld exists';
}

3. Class Map:
Diese Lösung benötigt eine Konfiguration, in der die Klassenbezeichnungen auf eine Datei im Dateisystem gemappt werden.

// example:
Location:  /path/to/your/lib/Com/Foobar/Helloworld.php
Classname: Com_Foobar_Helloworld

// Class map configuration file having a content like
return array(
    ...
    'Com_Foobar_Helloworld' => '/path/to/your/lib/Com/Foobar/Helloworld.php',
    'Com_Foobar_Response_Html' => '/path/to/your/lib/Com/Foobar/Response/Html.php',
    ...
);

// usage:
// a.) first you have to register a autoloader which loads required classes by 
// using the class map array structure.
// b.) then you can use something like
$foo = new Com_Foobar_Helloworld();
// or
echo (class_exists('Com_Foobar_Helloworld')) ? 'yes' : 'no';

Wenn nun das Projekt, an dem man Arbeitet nicht PSR-0 kompatibel ist, man also keine Möglichkeit hat anhand der Klassenbezeichnungen die dazugehörigen Dateien zu laden und man möchte nicht überall die require/include Statements einsetzen, dann ist die Verwendung der Class Map Lösung eine gute Alternative.

Das ist die Grundidee des Class Map Generators "mpAutoloaderClassMap", es ist in der Lage ein vorgegebenen Projektverzeichnis rekursiv nach vorhandenen Klassennamen zu parsen und aus den Ergebnissen eine Class Map Konfigurationsdatei zu generieren.

Das Verhalten des Class Map Generators kann über einige Optionen gesteuert werden, Details dazu gibt es auf der Projekseite.


Download

mpAutoloaderClassMap wird auf Google Code gehostet und kann von dort heruntergeladen werden.
mpAutoloaderClassMap at Google Code