解析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中header的用法详解
Jun 07 PHP
php获取一个变量的名字的方法
Sep 05 PHP
php字符串替换函数substr_replace()用法实例
Mar 17 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
Yii框架弹出框功能示例
Jan 07 PHP
PHP 爬取网页的主要方法
Jul 13 PHP
django中的ajax组件教程详解
Oct 18 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
Jun 05 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
使用Scrapy爬取动态数据
2018/10/21 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
Django如何实现上传图片功能
2019/08/16 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
数据库面试要点基本概念
2013/10/31 面试题
银行实习的自我鉴定
2013/12/10 职场文书
授权委托书格式范文
2014/08/02 职场文书
房屋产权证明书
2014/10/15 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
客户付款通知书
2015/04/23 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
校长新学期寄语2016
2015/12/04 职场文书
Python利用folium实现地图可视化
2021/05/23 Python