Automatisches Laden von Klassen

Viele Entwickler, die objektorientierte Anwendungen entwickeln, erzeugen für jede Klassendefinition eine eigene PHP-Quelldatei. Eines der größten Ärgernisse ist die Notwendigkeit, am Anfang eines jeden Skripts eine lange Liste von benötigten Include-Anweisungen (eine für jede Klasse) schreiben zu müssen.

Die Funktion spl_autoload_register() registriert eine beliebige Anzahl von Autoladern, die es ermöglichen, dass Klassen und Schnittstellen automatisch geladen werden, wenn sie derzeit nicht definiert sind. Durch das Registrieren von Autoladern erhält PHP einen letzten Versuch, die Klasse oder Schnittstelle zu laden, bevor es unter Ausgabe einer Fehlermeldung scheitert.

Jedes klassenähnliche Konstrukt kann auf die gleiche Weise automatisch geladen werden. Dazu gehören Klassen, Schnittstellen, Traits und Aufzählungen.

Achtung

Vor PHP 8.0.0 war es möglich, __autoload() zu verwenden, um Klassen und Schnittstellen automatisch zu laden. Dies ist jedoch eine weniger flexible Alternative zu spl_autoload_register(). __autoload() ist seit PHP 7.2.0 veraltet und wurde in PHP 8.0.0 entfernt.

Hinweis:

Die Funktion spl_autoload_register() kann mehrfach aufgerufen werden, um mehrere Autoloader zu registrieren. Wenn von einer Autoload-Funktion eine Exception ausgelöst wird, wird dieser Vorgang jedoch unterbrochen und es werden keine weiteren Autoload-Funktionen ausgeführt. Aus diesem Grund wird dringend davon abgeraten, von einer Autoload-Funktion aus eine Exception auszulösen.

Beispiel #1 Autoload-Beispiel

Dieses Beispiel versucht die Klassen MyClass1 und MyClass2 aus den entsprechenden Dateien MyClass1.php und MyClass2.php zu laden.

<?php
spl_autoload_register
(function ($class_name) {
    include 
$class_name '.php';
});

$obj  = new MyClass1();
$obj2 = new MyClass2();
?>

Beispiel #2 Weiteres Autoload-Beispiel

Dieses Beispiel versucht, das Interface ITest zu laden.

<?php

spl_autoload_register
(function ($name) {
    
var_dump($name);
});

class 
Foo implements ITest {
}

/*
string(5) "ITest"

Fatal error: Interface 'ITest' not found in ...
*/
?>

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Abmahnwelle durch Google Fonts - was ist zu beachten und wie schütze ich mich?

Abmahnwelle durch Google Fonts - was ist zu beachten und wie schütze ich mich?

Eine Abmahnwelle wegen Google Fonts rollt derzeit durch das Land und verunsichert viele Betreiber von Webseiten. Ausschlaggebend hierfür war ein Urteil des Landgerichts München vom 20.01.2022. ...

Bernie

Autor : ebiz-consult GmbH & Co. KG
Kategorie: Dies und Das

Was zeichnet einen Full-Stack-Webentwickler aus und welche Fähigkeiten muss ein Full-Stack-Webentwickler besitzen?

In immer mehr Stellenausschreibungen liest man den Begriff "Full-Stack-Webentwickler". Was aber macht einen Full-Stack-Webentwickler eigentlich aus? Welche Themen der Webentwicklung sollte er abdecken können? ...

TheMax

Autor : TheMax
Kategorie: PHP Magazin

phpFox 4.8.11 erschienen

phpFox, ein professionelles Facebook Clone Script ist in der Version 4.8.11 erschienen ...

PhpFox

Autor : PhpFox
Kategorie: Firmennews & Pressemitteilungen

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Text import mit š

leider habe ich keinen Ansatz mehr, habe nun behelfsmäßig alle betreffenden Zeichen im csv als Zeichen wie & oder % gesetzt und diese dann mit r ...

Geschrieben von jamessbuzzz am 01.12.2022 15:02:54
Forum: PHP Developer Forum
eMail Neuregistrierung

Besser spät als nie: Es gab einen Relaunch mit dem wir sowohl das Forum als auch den Rest der Webseite mal etwas modernisiert haben. Im Zuge der ...

Geschrieben von Jens am 28.11.2022 15:42:59
Forum: News / Kostenloses
.htaccess

Kannst du vielleicht mit 1-2 Beispielen ausführen was du erwartest und wie das tatsächliche Verhalten ist? So spontan würde ich erwarten, dass ...

Paginator - Normale Abfrage klappt einwandfrei ...

Das nennt sich "seitenweises blättern". Du musst mit Links und den entsprechenden Parametern arbeiten. Ich habe anno dunnemals dazu ein Tutorial ...

Geschrieben von Kropff am 25.11.2022 18:07:20
Forum: PHP Developer Forum