Maison développement back-end tutoriel php Explication détaillée sur l'utilisation de la fonction spl_autoload_register() en PHP

Explication détaillée sur l'utilisation de la fonction spl_autoload_register() en PHP

Jun 01, 2018 pm 05:25 PM
autoload php

Cet article présente principalement l'utilisation de la fonction spl_autoload_register() en PHP et analyse les compétences d'utilisation associées de la fonction __autoload et de la fonction spl_autoload_register sous forme d'exemples. Les amis dans le besoin peuvent se référer au

manuel recommandé  : manuel d'auto-apprentissage complet php
Avant de comprendre cette fonction, regardons une autre fonction : __autoload.


1. __autoload

Il s'agit d'une fonction de chargement automatique en PHP5, lorsque nous instancions une classe non définie, cela sera déclenché. Regardez l'exemple suivant :

printit.class.php :

<?php
class PRINTIT {
 function doPrint() {
 echo &#39;hello world&#39;;
 }
}
?>
Copier après la connexion
index.php

<?
function __autoload( $class ) {
 $file = $class . &#39;.class.php&#39;;
 if ( is_file($file) ) {
 require_once($file);
 }
}
$obj = new PRINTIT();
$obj->doPrint();?>
Copier après la connexion
Après avoir exécuté index.php, hello world s'affiche normalement . Dans index.php, puisque printit.class.php n'est pas inclus, lors de l'instanciation de printit, la fonction __autoload est automatiquement appelée. La valeur du paramètre $class est le nom de la classe printit. À ce stade, printit.class.php est introduit. .

Cette méthode est souvent utilisée en orienté objet, ce qui permet d'éviter d'écrire trop de fichiers de référence et également de rendre l'ensemble du système plus flexible.

2. spl_autoload_register()

Regardez spl_autoload_register() à nouveau. Cette fonction a le même effet que __autoload. 🎜>

Remplacez __autoload par la fonction loadprint. Mais loadprint ne sera pas déclenché automatiquement comme __autoload. À ce stade, spl_autoload_register() fonctionnera. Il indique à PHP d'exécuter loadprint() lorsqu'il rencontre une classe non définie.

<?
function loadprint( $class ) {
 $file = $class . &#39;.class.php&#39;;
 if (is_file($file)) {
 require_once($file);
 }
}
spl_autoload_register( &#39;loadprint&#39; );
$obj = new PRINTIT();
$obj->doPrint();?>
Copier après la connexion
spl_autoload_register() appelle la méthode statique

spl_autoload_register
<?
class test {
 public static function loadprint( $class ) {
 $file = $class . &#39;.class.php&#39;;
 if (is_file($file)) {
  require_once($file);
 }
 }
}
spl_autoload_register( array(&#39;test&#39;,&#39;loadprint&#39;) );
//另一种写法:spl_autoload_register( "test::loadprint" );
$obj = new PRINTIT();
$obj->doPrint();?>
Copier après la connexion

(PHP 5 >= 5.1.2)

spl_autoload_register — Enregistrez la fonction __autoload()

Description

bool spl_autoload_register ([ callback $autoload_function ] )Enregistrez la fonction dans la pile de fonctions SPL __autoload. Activez les fonctions dans cette pile si elles ne sont pas déjà actives.

Si la fonction __autoload a été implémentée dans votre programme, elle doit être explicitement enregistrée dans la pile __autoload. Parce que la fonction spl_autoload_register() remplacera la fonction __autoload dans Zend Engine par spl_autoload() ou spl_autoload_call().

Paramètres

autoload_function

La fonction de chargement automatique à enregistrer. Si aucun paramètre n'est fourni, la fonction d'implémentation par défaut spl_autoload() d'autoload est automatiquement enregistrée.

Valeur de retour

Renvoie VRAI en cas de succès, FAUX en cas d'échec.

Remarque :

SPL est l'abréviation de Standard PHP Library. Il s'agit d'une bibliothèque d'extension introduite dans PHP5. Ses principales fonctions incluent l'implémentation du mécanisme de chargement automatique et de diverses interfaces ou classes Iterator. Le mécanisme de chargement automatique SPL est implémenté en pointant le pointeur de fonction autoload_func vers une fonction auto-implémentée avec fonction de chargement automatique.

SPL a deux fonctions différentes spl_autoload et spl_autoload_call Différents mécanismes de chargement automatique sont implémentés en pointant autoload_func vers ces deux adresses de fonction différentes.

Si vous utilisez spl_autoload_register pour enregistrer une méthode de classe et une fonction __autoload en même temps, cela sera basé sur l'ordre d'enregistrement si le fichier de classe est chargé dans la première méthode ou fonction enregistrée. , elle ne sera pas chargée. La méthode ou la fonction de la deuxième classe enregistrée sera exécutée. Sinon, la méthode ou la fonction de la deuxième classe enregistrée sera exécutée.

classLOAD
{
 staticfunctionloadClass($class_name)
  {
    $filename= $class_name.".class.php";
 $path= "include/".$filename
    if(is_file($path)) returninclude$path;
  }
}
/**
 * 设置对象的自动载入
 * spl_autoload_register — Register given function as __autoload() implementation
 */
spl_autoload_register(array(&#39;LOAD&#39;, &#39;loadClass&#39;));
/**
*__autoload 方法在 spl_autoload_register 后会失效,因为 autoload_func 函数指针已指向 spl_autoload 方法
* 可以通过下面的方法来把 _autoload 方法加入 autoload_functions list
*/
spl_autoload_register( &#39;__autoload&#39;);
Copier après la connexion

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

<?php
class autoloader {
  public static $loader;
  public static function init() {
    if (self::$loader == NULL)
      self::$loader = new self ();
    return self::$loader;
  }
  public function __construct() {
    spl_autoload_register ( array ($this, &#39;model&#39; ) );
    spl_autoload_register ( array ($this, &#39;helper&#39; ) );
    spl_autoload_register ( array ($this, &#39;controller&#39; ) );
    spl_autoload_register ( array ($this, &#39;library&#39; ) );
  }
  public function library($class) {
    set_include_path ( get_include_path () . PATH_SEPARATOR . &#39;/lib/&#39; );
    spl_autoload_extensions ( &#39;.library.php&#39; );
    spl_autoload ( $class );
  }
  public function controller($class) {
    $class = preg_replace ( &#39;/_controller$/ui&#39;, &#39;&#39;, $class );
    set_include_path ( get_include_path () . PATH_SEPARATOR . &#39;/controller/&#39; );
    spl_autoload_extensions ( &#39;.controller.php&#39; );
    spl_autoload ( $class );
  }
  public function model($class) {
    $class = preg_replace ( &#39;/_model$/ui&#39;, &#39;&#39;, $class );
    set_include_path ( get_include_path () . PATH_SEPARATOR . &#39;/model/&#39; );
    spl_autoload_extensions ( &#39;.model.php&#39; );
    spl_autoload ( $class );
  }
  public function helper($class) {
    $class = preg_replace ( &#39;/_helper$/ui&#39;, &#39;&#39;, $class );
    set_include_path ( get_include_path () . PATH_SEPARATOR . &#39;/helper/&#39; );
    spl_autoload_extensions ( &#39;.helper.php&#39; );
    spl_autoload ( $class );
  }
}
//call
autoloader::init ();
?>
Copier après la connexion

Articles connexes recommandés :

1.Introduction au mécanisme de chargement automatique PHP - fonction spl_autoload_register(), chargement automatique de la classe PHP
2.
Comment utiliser spl_autoload_register pour implémenter l'autoloading automatique chargement Explication détaillée des exemples
Recommandations vidéo associées :
1.Tutoriel vidéo Dugu Jiujian (4)_PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

CakePHP travaillant avec la base de données CakePHP travaillant avec la base de données Sep 10, 2024 pm 05:25 PM

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Journalisation CakePHP Journalisation CakePHP Sep 10, 2024 pm 05:26 PM

Se connecter à CakePHP est une tâche très simple. Il vous suffit d'utiliser une seule fonction. Vous pouvez enregistrer les erreurs, les exceptions, les activités des utilisateurs, les actions entreprises par les utilisateurs, pour tout processus en arrière-plan comme cronjob. La journalisation des données dans CakePHP est facile. La fonction log() est fournie

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

See all articles