Heim > 类库下载 > PHP类库 > Mechanismus zum automatischen Laden der PHP-Klasse

Mechanismus zum automatischen Laden der PHP-Klasse

高洛峰
Freigeben: 2016-10-10 10:08:27
Original
1448 Leute haben es durchsucht

Automatisches Laden von PHP:

Wenn wir vor PHP5 eine bestimmte Klasse oder Klassenmethode verwenden wollten, mussten wir diese einschließen oder erfordern, bevor wir sie verwenden konnten Es ist notwendig, ein Include zu schreiben.

Der PHP-Autor möchte es einfach machen. Es ist am besten, auf eine Klasse zu verweisen. Wenn derzeit kein Include vorhanden ist, kann das System die Klasse automatisch finden und automatisch einführen~

Also: __autoload() Funktionen entstanden.

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 der Datei A.php ist wie folgt

<?php
class A{
  public function __construct(){
         echo &#39;fff&#39;;
  }
}
?>
文件C.php 中内容如下:
<?php   
function __autoload($class)   
{   
$file = $class . &#39;.php&#39;;   
if (is_file($file)) {   
require_once($file);   
}   
}   

$a = new A(); //这边会自动调用__autoload,引入A.php文件
?>
Nach dem Login kopieren

Der zweite Fall: Manchmal hoffe ich Um das automatische Laden anzupassen und dem Lader einen cooleren Namen zu geben, sollte C.php wie folgt geändert werden:

<?php
function loader($class)
{
$file = $class . &#39;.php&#39;;
if (is_file($file)) {
require_once($file);
}
}
spl_autoload_register(&#39;loader&#39;); //注册一个自动加载方法,覆盖原有的__autoload
$a = new A();
?>
Nach dem Login kopieren

Die dritte Situation: Ich möchte anspruchsvoller sein und eine Klasse verwenden, um das automatische Laden zu verwalten wird geladen

<?php   
class Loader   
{   
public static function loadClass($class)   
{   
$file = $class . &#39;.php&#39;;   
if (is_file($file)) {   
require_once($file);   
}   
}   
}   

spl_autoload_register(array(&#39;Loader&#39;, &#39;loadClass&#39;));   

$a = new A();
?>
Nach dem Login kopieren

Derzeit die beste Form.

Normalerweise setzen wir spl_autoload_register(*) in das Eingabeskript, also von Anfang an in Anführungszeichen. Zum Beispiel der folgende Discuz-Ansatz.

if(function_exist(&#39;spl_autoload_register&#39;)){
  spl_autoload_register(array(&#39;core&#39;,&#39;autoload&#39;));  //如果是php5以上,存在注册函数,则注册自己写的core类中的autoload为自动加载函数
}else{
  function __autoload($class){         //如果不是,则重写php原生函数__autoload函数,让其调用自己的core中函数。
    return core::autoload($class);
  }
}
Nach dem Login kopieren

Diesen Absatz an den Anfang der Eintragsdatei zu setzen ist natürlich ausgezeichnet~

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage