解析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 开发工具
Dec 06 PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
fetchAll()与mysql_fetch_array()的区别详解
Jun 05 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
May 10 PHP
php过滤html标记属性类用法实例
Sep 23 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
合格的PHP程序员必备技能
Nov 13 PHP
PHP类型约束用法示例
Sep 28 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
收集的php编写大型网站问题集
2007/03/06 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
在Python的Django框架中更新数据库数据的方法
2015/07/17 Python
python开发中range()函数用法实例分析
2015/11/12 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
师德师风自我剖析材料
2014/09/27 职场文书
公司出差管理制度范本
2015/08/05 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python
详细了解MVC+proxy
2021/07/09 Java/Android