解析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 事件机制(2)
Mar 23 PHP
php设计模式  Command(命令模式)
Jun 17 PHP
phpcms模块开发之swfupload的使用介绍
Apr 28 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
thinkphp特殊标签用法概述
Nov 24 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
php while循环控制的简单实例
May 30 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
php json相关函数用法示例
Mar 28 PHP
PHP命名空间简单用法示例
Dec 28 PHP
php中对象引用和复制实例分析
Aug 14 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
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
使用PHP开发留言板功能
2019/11/19 PHP
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
jQuery制作可自定义大小的拼图游戏
2015/03/30 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
浅析vue数据绑定
2017/01/17 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
Django如何配置mysql数据库
2018/05/04 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
基于python历史天气采集的分析
2019/02/14 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
Python map及filter函数使用方法解析
2020/08/06 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
学生发电厂实习自我鉴定
2013/09/22 职场文书
医学类导师推荐信范文
2013/11/19 职场文书
高中运动会入场词
2014/02/14 职场文书
影视广告专业求职信
2014/09/02 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
PyTorch中permute的使用方法
2022/04/26 Python