Zum Inhalt springen

PHP Tutorial: Klassen automatisch einbinden

PHP Tutorial - Klassen automatisch einbinden

Wenn es in PHP um komplexere Anwendungen geht, dann empfiehlt es sich objektorientiert mit Klassen zu arbeiten.

Eine Mühsame Arbeit ist aber das ständige einbinden der benötigten Klassen in jeder Datei, dazu gibt es aber von PHP einen Autoloader.

Inhaltsverzeichnis

Methode 1

Alle Klassen liegen in einem einzigen Ordner namens classes.

Hier ein Screenshot zur Veranschaulichung:

PHP Klassen

Du erstellst eine Funktion, ich nenne diese classAutoloader($class).

function classAutoloader($class) {

    $path = "classes/$class.php";

    if (file_exists($path)) {
        require $path;
    }
}

Wenn du jetzt auf eine Klasse instanziierst, dann übergibt spl_autoload_register den Namen automatisch an deine Autoloader-Funktion weiter und deine Funktion setzt den Dateipfad zusammen und speichert ihn in der Variable $path.

Mit der if-Abfrage wird überprüft ob es diese Klasse tatsächlich auch gibt, wenn ja, dann wird mit require die Datei eingebunden.

Wichtig: das ganze System setzt voraus, dass du den selben Namen für die Klasse sowie für die PHP-Datei in der sich die Klasse befindet verwendest, auch auf Groß- und Kleinbuchstaben achten.



Banner


Methode 2

Wenn du Dateinamen der Klassen mehrfach verwenden willst, dann gibt es die Möglichkeit die Klassen in Unterordnern zu packen, dazu muss aber die Autoloader-Klasse etwas verändert werden.

Hier ein Screenshot der Ordner- und Dateienstruktur, damit du siehst was ich meine:

PHP Klassen

Mit dieser Ordnerstruktur kannst du dein Projekt etwas übersichtlicher strukturieren.

Um in der index.php die Klasse Setting aus dem Ordner User zu laden muss diese folgendermaßen benannt werden:

$userEinstellungen = new User_Settings();

Inhalt der Datei Settings.php aus dem Ordner User:

class User_Settings {
    // Das ist die Klasse Settings im Ordner classes/User
}

In der Datei Settings.php aus dem Ordner classes:

class Settings {
    // Das ist die Klasse Settings im Ordner classes
}

Die Autoloader-Klasse sieht dann so aus:

function classAutoloader($class) {

    $split = explode('_', $class);
    $classPath = implode('/', $split);
    $path = "classes/$classPath.php";

    if (file_exists($path)) {
        require $path;
    }
}

spl_autoload_register('classAutoloader');

Der Unterstrich zwischen User und Settings im Klassennamen ist die Trennung, die in der Autoloader-Klasse mit explode genommen wird, es kann auch ein anderes Zeichen genommen werden.

Die Variable $classPath fügt den Dateipfad zusammen und trennt die Wörter die zuvor getrennt wurden mit einem /.

Die Variable $path fügt am Anfang noch den Ordnernamen in dem alle Klassen enthalten sind hinzu, dann die Variable $classPath und zum Schluss .php um einen korrekten Pfad zu einer Datei zu bekommen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

10 + 16 =