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


Posted in PHP onJuly 05, 2013

工程目录如下:

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

1、将需要注册的类放在一个数组中

<?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;
    }
}
?>

2、注册数组
注意:
步骤1中的类的路径都是相对于init.php而言的,不是相对于Utils而言的,这是因为我们通过init.php里的自动加载函数spl_autoload_register来require类的
<?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 ();
?>

3、本例中在使用处test.php里require init.php
<?php
require_once 'Init.php';
$dao = new UserDao();
$result = $dao->findByName('zcl');
?>
PHP 相关文章推荐
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
php中使用Imagick实现图像直方图的实现代码
Aug 30 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
PHP中创建和验证哈希的简单方法实探
Jul 06 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
Mar 23 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PHP处理bmp格式图片的方法分析
Jul 04 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP分享图片的生成方法
Apr 25 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 PHP
php 注册时输入信息验证器的实现详解
Jul 05 #PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 #PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 #PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 #PHP
如何解决CI框架的Disallowed Key Characters错误提示
Jul 05 #PHP
浅析十款PHP开发框架的对比
Jul 05 #PHP
利用PHP实现短域名互转
Jul 05 #PHP
You might like
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
动态表格Table类的实现
2009/08/26 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
jquery动态分页效果堪比时光网
2014/09/25 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
详解a++和++a的区别
2017/08/30 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
讲解Python中的递归函数
2015/04/27 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
我的画教学反思
2014/04/28 职场文书
优秀求职信
2014/05/29 职场文书
学校食品安全责任书
2015/01/29 职场文书
学校捐款活动总结
2015/05/09 职场文书