解析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(1)
Oct 09 PHP
ezSQL PHP数据库操作类库
May 16 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
php字符串函数学习之substr()
Mar 27 PHP
利用PHP如何实现Socket服务器
Sep 23 PHP
php常量详细解析
Oct 27 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
Feb 16 PHP
mac下多个php版本快速切换的方法
Oct 09 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
Aug 10 PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 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中利用XML技术构造远程服务(上)
2006/10/09 PHP
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
Jquery 常用方法经典总结
2010/01/28 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
python和C语言混合编程实例
2014/06/04 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
python实现各进制转换的总结大全
2017/06/18 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
Python实现随机漫步功能
2018/07/09 Python
python3实现表白神器
2019/04/09 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
python连接PostgreSQL过程解析
2020/02/09 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
应届毕业生的个人自我鉴定
2013/10/24 职场文书
公司庆典邀请函范文
2014/01/13 职场文书
2016年感恩节寄语
2015/12/07 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书