Maison  >  Article  >  développement back-end  >  Comment utiliser l'inscription et le chargement automatique dans les classes PHP

Comment utiliser l'inscription et le chargement automatique dans les classes PHP

伊谢尔伦
伊谢尔伦original
2017-07-01 09:52:46964parcourir

Cet article est une analyse détaillée et une introduction à l'enregistrement des cours PHP et au chargement automatique. Les amis dans le besoin peuvent se référer au répertoire du projet

comme suit :



1. Placez les classes qui doivent être enregistrées dans un tableau

Le code est la suivante :

<?php
final class Utils {
    private function construct() {
    }
    public static function getClasses($pre_path = &#39;/&#39;) {
        $classes = array(
                &#39;DBConfig&#39; => $pre_path.&#39;DBConfig/DBConfig.php&#39;,
                &#39;User&#39; => $pre_path.&#39;Model/User.php&#39;,
                &#39;Dao&#39; => $pre_path.&#39;Dao/Dao.php&#39;,
                &#39;UserDao&#39; => $pre_path.&#39;Dao/UserDao.php&#39;,
                &#39;UserMapper&#39; => $pre_path.&#39;Mapping/UserMapper.php&#39;,
        );
        return $classes;
    }
}
?>


2. Tableau d'enregistrement
Remarque :
Les chemins des classes à l'étape 1 sont relatifs à init. php , pas relatif à Utils, c'est parce que nous utilisons la fonction de chargement automatique spl_autoload_register dans init.php pour require classe

Le code est le suivant :

<?php
require_once
 &#39;/Utils/Utils.php&#39;;
final class Init {
    /**
     * System config.
     */
    public function init() {
        // error reporting - all errors for development (ensure you have
        // 
display
_errors = On in your php.ini file)
        
error_reporting
 ( E_ALL | E_STRICT );
        mb_internal_encoding ( &#39;UTF-8&#39; );
        //registe classes
        spl_autoload_register ( array ($this,&#39;loadClass&#39; ) );
    }
    /**
     * Class loader.
     */
    public function loadClass($name) {
        $classes = Utils::getClasses ();
        if (! 
array_key_exists
 ( $name, $classes )) {
            die ( &#39;Class "&#39; . $name . &#39;" not found.&#39; );
        }
        require_once $classes [$name];
    }
}
$init = new Init ();
$init->init ();
?>


3. Dans cet exemple, le code require init.php

dans test.php est le suivant :

<?php
require_once &#39;Init.php&#39;;
$dao = new UserDao();
$result = $dao->findByName(&#39;zcl&#39;);
?>


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