解析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 相关文章推荐
获得Google PR值的PHP代码
Jan 28 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
浅析is_writable的php实现
Jun 18 PHP
部署PHP项目应该注意的几点事项分享
Dec 20 PHP
使用php语句将数据库*.sql文件导入数据库
May 05 PHP
CodeIgniter安全相关设置汇总
Jul 03 PHP
yii实现创建验证码实例解析
Jul 31 PHP
PHP的关于变量和日期处理的一些面试题目整理
Aug 10 PHP
详解WordPress开发中的get_post与get_posts函数使用
Jan 04 PHP
Thinkphp实现短信验证注册功能
Oct 18 PHP
在laravel中实现事务回滚的方法
Oct 10 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
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
php 在线打包_支持子目录
2008/06/28 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
Firefox window.close()的使用注意事项
2009/04/11 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
JSONP之我见
2015/03/24 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
JS 事件机制完整示例分析
2020/01/15 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
Python多进程同步简单实现代码
2016/04/27 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
python异常触发及自定义异常类解析
2019/08/06 Python
美国老牌主机服务商:iPage
2016/07/22 全球购物
网络安全类面试题
2015/08/01 面试题
利群广告词
2014/03/20 职场文书
《火烧云》教学反思
2014/04/12 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
python字典的元素访问实例详解
2021/07/21 Python
使用Django框架创建项目
2022/06/10 Python