phps automatisches Laden:
Wenn wir vor PHP5 eine bestimmte Klasse oder Klassenmethode verwenden wollten, mussten wir include oder require angeben , es kann später verwendet werden, Sie müssen ein Include schreiben
Es ist am besten, eine Klasse zu referenzieren Ist derzeit kein Include vorhanden, kann das System automatisch diese Klasse suchen und automatisch einführen~
So entstand die Funktion autoload().
wird normalerweise in der Anwendungseintragsklasse platziert, z. B. discuz, in class_core.php.
Lassen Sie uns zunächst über ein einfaches Beispiel sprechen:
Der erste Fall : Der Inhalt in Datei A.php lautet wie folgt
<?php class A{ public function construct(){ echo 'fff'; } } ?>
In Datei C.php Der Inhalt ist wie folgt:
<?php function autoload($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } $a = new A(); //这边会自动调用autoload,引入A.php文件 ?>
Zweiter Fall: Manchmal hoffe ich, Autoload anzupassen und dem Loader einen cooleren Namen zu geben, daher sollte C.php in geändert werden Folgendes:
<?php function loader($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } spl_autoload_register('loader'); //注册一个自动加载方法,覆盖原有的autoload $a = new A(); ?>
Die dritte Situation: Ich hoffe, anspruchsvoller zu sein und eine Klasse zu verwenden, um das automatische Laden zu verwalten
<?php class Loader { public static function loadClass($class) { $file = $class . '.php'; if (is_file($file)) { require_once($file); } } } spl_autoload_register(array('Loader', 'loadClass')); $a = new A(); ?>
Derzeit die beste Form.
Normalerweise setzen wir spl_autoload_register(*) in das Eingabeskript, d. h. von Anfang an in Anführungszeichen. Zum Beispiel der folgende Discuz-Ansatz.
if(function_exist('spl_autoload_register')){ spl_autoload_register(array('core','autoload')); //如果是php5以上,存在注册函数,则注册自己写的core类中的autoload为自动加载函数 }else{ function autoload($class){ //如果不是,则重写php原生函数autoload函数,让其调用自己的core中函数。 return core::autoload($class); } }
Dieser Absatz steht am Anfang der Eintragsdatei, was natürlich ausgezeichnet ist~
Das obige ist der detaillierte Inhalt vonWas ist die PHP-Autoloading-Klasse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!