解析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入门速成(2)
Oct 09 PHP
用PHP制作静态网站的模板框架(三)
Oct 09 PHP
PHP生成带有雪花背景的验证码
Sep 28 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
Aug 06 PHP
php生成rss类用法实例
Apr 14 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
PHP实现验证码校验功能
Nov 16 PHP
PHP的PDO预定义常量讲解
Jan 24 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简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
JS显示下拉列表框内全部元素的方法
2015/03/31 Javascript
简单实现轮播图效果的实例
2016/07/15 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
Python实现简单拆分PDF文件的方法
2015/07/30 Python
python利用datetime模块计算时间差
2015/08/04 Python
使用python实现接口的方法
2017/07/07 Python
python内置数据类型之列表操作
2018/11/12 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
Python assert关键字原理及实例解析
2019/12/13 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
生产车间主管岗位职责
2013/12/28 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
责任书范本大全
2015/05/11 职场文书
如何写辞职信
2015/05/13 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
一文带你探究MySQL中的NULL
2021/11/11 MySQL