Frage

php.net :

  

In PHP 5 ist dies nicht mehr notwendig. Sie können eine __autoload() Funktion definieren, die automatisch aufgerufen wird, falls Sie versucht, eine Klasse / Schnittstelle zu verwenden, die noch nicht definiert wurde. Durch den Aufruf dieser Funktion wird die Scripting-Engine eine letzte Chance gegeben, um die Klasse zu laden, bevor PHP mit einem Fehler fehlschlägt.

Jetzt bin zu wollen, was ich weiß, ist es eine schlechte Praxis ausschließlich __autoload verwenden, um die entsprechenden Klassen auf einer dynamischen Seite zu laden?

Die Art und Weise meine Aufstellungsorteinstellung ist Dateien in die index.php-Datei aufgenommen werden, zum Beispiel http://www.site.com/index.php?p=PAGE-I-WANT-TO-LOAD

Also, wenn ich auf dem Forum Abschnitt am oder Blogs Abschnitt von meiner Seite, ich will nur entsprechende Klassen und Funktionen geladen werden, so dass ich automatisch geladen, aber ich schließe nie eine Datei manuell, soll ich __autoload als letztes Mittel verwenden greifen oder ist das, was ich auf einem hohen Verkehrssystem in Ordnung selbst mache?

War es hilfreich?

Lösung

Bad? Nein. __autoload() ist eine meiner Lieblings-Ergänzungen PHP 5. Es Verantwortung (und Ärger) entfernt von manuell schließen zu müssen / erfordern Dateien die Klasse notwendig, um Ihre Anwendung. Davon abgesehen, ist es an Sie als Entwickler, um sicherzustellen, dass nur die "geeigneten Klassen geladen werden. Dies ist leicht mit einem strukturierten Namensschema und Verzechnisstruktur. Es gibt viele Beispiele dafür, wie Online-__autoload richtig verwenden (), eine Google-Suche und Sie werden viele Informationen finden.

Andere Tipps

Autoload ist ein guter Weg, nur zu laden, welche Klassen benötigt werden.

In PHP 5> = 5.1.2, die meisten Probleme mit dem alten __autoload () verschwunden, dank spl_autoload_register () .

  

Jetzt bin zu wollen, was ich weiß, ist es eine schlechte Praxis ausschließlich __autoload verwenden, um die entsprechenden Klassen auf einer dynamischen Seite zu laden?

nicht. Sie können auf automatischen Laden verlassen, alles, was Sie tun müssen, ist eine gute Namenskonvention zu entwickeln und einen effizienten Autoloader implementieren.

Es gibt ein großes Problem zu betrachten. Autoloading und Zend Guard nicht gut zusammen spielen, weil Zend Guard neigt, Dinge zu benennen, die, dass die Namenskonvention bedeuten, werden Sie höchstwahrscheinlich das gleiche nicht zu verwenden, entschieden werden. Wenn Sie Zend Guard werden (oder anderen obfuscator für diese Angelegenheit) Sie werden wahrscheinlich gezwungen sein, alle Dateien mit der Hand umfassen.

Hier ist ein Zitat aus dem Zend Guard Benutzerhandbuch:

  

Autoloading Klassen werden nicht auf der Festplatte, da die Dateinamen funktionieren nicht   entspricht die verschleierten Klassennamen.

Die einzige Gefahr für __autoload (), wenn Sie eine schlechte autoloading Funktion definieren. Im Allgemeinen sind alle Sie gehen in Bezug auf eine Performance-Einbußen zu bekommen, ist ein paar Platten sucht als PHP für die richtigen Dateien sucht, die Ihre Klassen enthalten. Der Kopf wird loszuwerden all diese nervigen include() Anrufe.

Wenn Sie über die Leistung auf dieser Ebene besorgt sind, dann sollten Sie bereits einen Opcode Cache wie APC werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top