Chargement automatique des classes PHP

不言
Libérer: 2023-03-24 20:40:01
original
1610 Les gens l'ont consulté

Cet article présente le chargement automatique des classes PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Écrivez d'abord un HumanModel.php

class HumanModel {
    public function t() {
        echo &#39;人类<br >&#39;;
    }
}
Copier après la connexion
Copier après la connexion

// =Exemple= //

require(&#39;./HumanModel.php&#39;);$lisi = new HumanModel();$lisi->t(); // 人类
Copier après la connexion
Copier après la connexion

// =Chargement automatique des classes= //

function __autoload($c) {
    echo &#39;~~~~~~~~~&#39;,$c,&#39;~~~~~~~~&#39;;
}$ming = new Dog();
Copier après la connexion
Copier après la connexion

// ===Notes Partie 1===

/*

Chargement automatique des classes

Si une classe inexistante est appelée,

Avant de signaler une erreur, nous pouvons utilisez également la fonction __autoload
pour obtenir une opportunité d'intervention

Le système appellera la fonction __autoload()

et transmettra automatiquement le "nom de classe" à la fonction __autoload

Nous will Vous pouvez charger les classes requises dans __autoload

*/

function __autoload($c) {
    echo &#39;我先自动加载&#39;;    echo &#39;./&#39; . $c . &#39;.php&#39;;    echo &#39;<br >&#39;;    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$lisi = new HumanModel();$lisi->t();// 我先自动加载./HumanModel.php// 人类function test() {
    // 函数内可以写任何合法的PHP代码,包含再声明一个函数/类
    class Bird {
        public static function sing() {
            echo &#39;百灵鸟放声歌唱!<br >&#39;;
        }
    }
}// 必须要调用函数然后才能执行内部test();
Bird::sing(); 


/*
Bird::sing(); 

未定义类
转到上面类的自动加载函数中,于是报错如下:
Warning: require(./Bird.php): failed to open stream: No such file or directory
找不到Bird这个php
*/
Copier après la connexion
Copier après la connexion

// ===Notes Partie 2===

/*

Chargement automatique Puis-je utiliser uniquement la fonction __autoload ?
Réponse : Non, vous pouvez réellement spécifier une fonction.

Par exemple, utilisez la fonction zidongjiazai()

Remarque : Nous devons informer le système que nous avons écrit un chargement automatique method

Utilisez la fonction système spl_autoload_register pour notifier
*/

spl_autoload_register(&#39;zidongjiazai&#39;);function zidongjiazai($c) {
    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$HumanModel = new HumanModel();$HumanModel->t();
Copier après la connexion
Copier après la connexion
// Astuces : Nous pouvons également enregistrer une méthode statique de la classe pour servir de fonction de chargement automatique

Écrivez d'abord un HumanModel.php

class HumanModel {
    public function t() {
        echo &#39;人类<br >&#39;;
    }
}
Copier après la connexion
Copier après la connexion

// =Citation= //

require(&#39;./HumanModel.php&#39;);$lisi = new HumanModel();$lisi->t(); // 人类
Copier après la connexion
Copier après la connexion

// =Chargement automatique des classes= //

function __autoload($c) {
    echo &#39;~~~~~~~~~&#39;,$c,&#39;~~~~~~~~&#39;;
}$ming = new Dog();
Copier après la connexion
Copier après la connexion

// ===Notes Partie 1====

/*

Chargement automatique des classes

Si une classe inexistante est appelé,

Avant de signaler une erreur, nous pouvons également utiliser la fonction __autoload
pour obtenir une opportunité d'intervention

Le système appellera la fonction __autoload()

et passera automatiquement la "classe name" à la fonction __autoload

us Vous pouvez charger les classes requises dans __autoload

*/

function __autoload($c) {
    echo &#39;我先自动加载&#39;;    echo &#39;./&#39; . $c . &#39;.php&#39;;    echo &#39;<br >&#39;;    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$lisi = new HumanModel();$lisi->t();// 我先自动加载./HumanModel.php// 人类function test() {
    // 函数内可以写任何合法的PHP代码,包含再声明一个函数/类
    class Bird {
        public static function sing() {
            echo &#39;百灵鸟放声歌唱!<br >&#39;;
        }
    }
}// 必须要调用函数然后才能执行内部test();
Bird::sing(); 


/*
Bird::sing(); 

未定义类
转到上面类的自动加载函数中,于是报错如下:
Warning: require(./Bird.php): failed to open stream: No such file or directory
找不到Bird这个php
*/
Copier après la connexion
Copier après la connexion

// ===Notes Partie 2===

/*

Automatiquement Le chargement peut-il être effectué uniquement à l'aide de la fonction __autoload ?
Réponse : Non, vous pouvez réellement spécifier une fonction.

Par exemple, utilisez la fonction zidongjiazai()

Remarque : Nous devons informer le système que nous avons écrit un chargement automatique method

Utilisez la fonction système spl_autoload_register pour notifier
*/

spl_autoload_register(&#39;zidongjiazai&#39;);function zidongjiazai($c) {
    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$HumanModel = new HumanModel();$HumanModel->t();
Copier après la connexion
Copier après la connexion
// Astuces : Nous pouvons également enregistrer une méthode statique de la classe en tant que fonction de chargement automatique

Connexe recommandations :

Classe abstraite de 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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal