解析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中截取字符串支持utf-8
Jan 18 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
解析PHP可变函数的经典用法
Jun 20 PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
Nov 18 PHP
php基于curl扩展制作跨平台的restfule 接口
May 11 PHP
PHP环境搭建的详细步骤
Jun 30 PHP
轻松实现php文件上传功能
Feb 17 PHP
PHP验证类的封装与使用方法详解
Jan 10 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
Dec 12 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框架Symfony2经典入门教程
2014/07/08 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
PHP实现图片的等比缩放和Logo水印功能示例
2017/05/04 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
jquery 与NVelocity 产生冲突的解决方法
2011/06/13 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
2016/05/14 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
jQuery+ajax的资源回收处理机制分析
2017/01/07 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
Vue解析剪切板图片并实现发送功能
2020/02/04 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
Python调用C# Com dll组件实战教程
2017/10/12 Python
Python算法之图的遍历
2017/11/16 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
微信公众号token验证失败解决方案
2019/07/22 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
opencv+python实现均值滤波
2020/02/19 Python
python xlsxwriter模块的使用
2020/12/24 Python
工作过失检讨书
2014/02/23 职场文书
信用卡工资证明格式
2014/09/13 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书