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:
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.
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:
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.