源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

解析php类的注册与自动加载

  • 时间:2022-02-21 20:43 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:解析php类的注册与自动加载
[b]工程目录如下: [/b][img]http://files.jb51.net/file_images/article/201307/201307051050072.jpg[/img] [b]1、将需要注册的类放在一个数组中 [/b]
[u]复制代码[/u] 代码如下:
<?php final class Utils {     private function __construct() {     }     public static function getClasses($pre_path = '/') {         $classes = array(                 'DBConfig' => $pre_path.'DBConfig/DBConfig.php',                 'User' => $pre_path.'Model/User.php',                 'Dao' => $pre_path.'Dao/Dao.php',                 'UserDao' => $pre_path.'Dao/UserDao.php',                 'UserMapper' => $pre_path.'Mapping/UserMapper.php',         );         return $classes;     } } ?>
[b]2、注册数组 注意:[/b]步骤1中的类的路径都是相对于init.php而言的,不是相对于Utils而言的,这是因为我们通过init.php里的自动加载函数spl_autoload_register来require类的
[u]复制代码[/u] 代码如下:
<?php require_once '/Utils/Utils.php'; 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 ( 'UTF-8' );         //registe classes         spl_autoload_register ( array ($this,'loadClass' ) );     }     /**      * Class loader.      */     public function loadClass($name) {         $classes = Utils::getClasses ();         if (! array_key_exists ( $name, $classes )) {             die ( 'Class "' . $name . '" not found.' );         }         require_once $classes [$name];     } } $init = new Init (); $init->init (); ?>
[b]3、本例中在使用处test.php里require init.php [/b]
[u]复制代码[/u] 代码如下:
<?php require_once 'Init.php'; $dao = new UserDao(); $result = $dao->findByName('zcl'); ?>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部