Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Beispiele für automatische Ladevorgänge von PHP-Klassen

Detaillierte Erläuterung der Beispiele für automatische Ladevorgänge von PHP-Klassen

高洛峰
高洛峰Original
2016-12-21 14:00:54954Durchsuche

Das Beispiel in diesem Artikel beschreibt den automatischen Ladevorgang der PHP-Klasse. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Automatisches Laden von Klassen

Auf externen Seiten müssen keine Klassendateien eingeführt werden, aber das Programm lädt automatisch eine Klasse, wenn es benötigt wird. Gehen Sie zu „Dynamisches Laden“ der Klasse.

① Beim Erstellen eines neuen Objekts

② Verwenden Sie direkt einen Klassennamen (um statische Eigenschaften und Methoden zu bedienen)

Verwenden Sie die magische Funktion __autoload

Wann In zwei Situationen wird diese Funktion aufgerufen. Diese Funktion erfordert, dass wir sie im Voraus definieren und eine allgemeine Anweisung zum Laden von Klassendateien schreiben

function __autoload($name){
  require './lib/'.$name.'.class.php';
}

Verwenden Sie spl_autoload_register()

Verwenden Sie es, um mehrere Funktionen zu registrieren (deklarieren), die __autoload() ersetzen können. Natürlich müssen Sie diese Funktionen definieren, und die Funktion der Funktion ist dieselbe wie __autoload(), aber Sie können damit umgehen es zu diesem Zeitpunkt Weitere Situationen

//注册用于自动加载的函数
spl_autoload_register("model");
spl_autoload_register("controll");
//分别定义两个函数
function model($name){
  $file = './model/'.$name.'.class.php';
  if(file_exists($file)){
    require './model/'.$name.'.class.php';
  }
}
//如果需要一个类,但当前页面还没加载该类
//就会依次调用model()和controll(),直到找到该类文件加载,否则就报错
function controll($name){
  $file = './controll/'.$name.'.class.php';
  if(file_exists($file)){
    require './controll/'.$name.'.class.php';
  }
}

//若注册的是方法而不是函数,则需要使用数组
spl_autoload_register(
  //非静态方法
  array($this,'model'),
  //静态方法
  array(__CLASS__,'controller')
);

Projektszenarioanwendung

//自动加载
//控制器类 模型类 核心类
//对于所有的类分为可以确定的类以及可以扩展的类
spl_autoload_register('autoLoad');
//先处理确定的框架核心类
function autoLoad($name){
  //类名与类文件映射数组
  $framework_class_list = array(
    'mySqldb' => './framework/mySqldb.class.php'
  );
  if(isset($framework_class_list[$name])){
    require $framework_class_list[$name];
  }elseif(substr($name,-10)=='Controller'){
    require './application/'.PLATFORM.'/controller/'.$name.'.class.php';
  }elseif(substr($name,-6)=='Modele'){
    require './application/'.PLATFORM.'/modele/'.$name.'.class.php';
  }
}


Ich hoffe, dass das, was dieser Artikel beschreibt, für jeden hilfreich sein wird, der sich mit der PHP-Programmierung beschäftigt.

Ausführlichere Beispiele für automatische Ladevorgänge von PHP-Klassen finden Sie auf der chinesischen PHP-Website für verwandte Artikel!


Stellungnahme:
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