解析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 session 存储方式的详细介绍
Jun 25 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
smarty简单分页的实现方法
Oct 27 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 PHP
php面向对象值单例模式
May 03 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 PHP
php获取POST数据的三种方法实例详解
Dec 20 PHP
PHP使用递归算法无限遍历数组示例
Jan 13 PHP
php生成无限栏目树
Mar 16 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
PHP操作Redis常用命令的实例详解
Dec 23 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实现httpclient类示例
2014/04/08 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
php中使用GD库做验证码
2016/03/31 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
javascript中length属性的探索
2011/07/31 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
python基本语法练习实例
2017/09/19 Python
Python处理命令行参数模块optpars用法实例分析
2018/05/31 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
党员个人对照检查材料范文
2014/09/24 职场文书
少先队工作总结2015
2015/05/13 职场文书
起诉状范本
2015/05/20 职场文书
小学庆六一主持词
2015/06/30 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
用Python提取PDF表格的方法
2021/04/11 Python
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python