Verzeichnissstruktur PHP5 __autoload

R00Ki3

Erfahrenes Mitglied
Hi, ich bin gerade dabei ein kleines System Modular auf Basis von MVC aufzubauen.
Frei nach dem Motto Erfahrungen sammeln, womöglich später aktiv nutzen und just 4 fun.
Ich bin jetzt endlich mal auf PHP5 umgesprungen und möchte die Funktionalität schon nutzen.

Ich wollte einfach mal reinhören wie ihr das Problem includen der Dateien gelöst habe.
Ich möchte es so flexibel wie möglich halten.

Mein jetziges System ist von der Struktur ungefähr so aufgebaut.

+news
+---newsController.php
+---newsData.php
+---newsView.php
gallery
+---galleryController.php
+---galleryData.php
+---galleryView.php
lib
+--mysql.php
+--template.php
+--email.php
+--form.php
---+form
---+---textElement.php
---+---selectElement.php
usw...

Mit hilfe der funktion autoload kann ich ja nicht eingefügt Klassen includen.
Bei den Modulen ist es eigendlich kein Problem, Dateiname = ClassenName
Mein Problem sind eher die Dateien Lib/form/texteElement.php

Als mögliche Lösung hatte ich mir gedacht den ClassenNamen wie auch den Dateinamen wie das verzeichniss aufzubauen nur halt den Punkt als trennzeichen zu verwenden.

Die Lösung sehe dann so aus.
public function __autoload($classname){
$path = str_replace(".", "/", $classname);
if(file_exists($path)){
require_once($path);
}else{
...
}
}

die Classen erhalten dann nur recht komische Namen.
z.b.
lib.form.textElement

Ich wäre über einpaar Vorschläge dankbar.
 
Hi, also ich habe mein System ähnlich aufgebaut, nur das ich die Klassennamen mit Unterstrichen trenne also z.B. Controller_Request_HTTP usw. und dann die Dateien im entsprechenden Verzeichnis ablege. Ich würde noch zusätzlich strtolower() nutzen, und einfach alle Verzeichnis- und Dateinamen klein schreiben. Ausserdem solltest du statt dem / im str_replace lieber die DIRECTORY_SEPARATOR Konstante benutzen, man weiss ja nie... ;)
 
Zurück