Heim Backend-Entwicklung PHP-Tutorial Was ist die PHP-Autoloading-Klasse?

Was ist die PHP-Autoloading-Klasse?

Jul 01, 2017 am 09:16 AM
php 加载 自动

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';
  }
}
?>
Nach dem Login kopieren

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文件
?>
Nach dem Login kopieren

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();
?>
Nach dem Login kopieren

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();
?>
Nach dem Login kopieren

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);
  }
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

CakePHP Datum und Uhrzeit

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

CakePHP-Projektkonfiguration

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

CakePHP-Datei hochladen

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

CakePHP-Routing

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

Besprechen Sie CakePHP

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP-Kurzanleitung

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein

See all articles