解析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 管理系统程序中的后门
Aug 05 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
探讨PHP JSON中文乱码的解决方法详解
Jun 06 PHP
php中如何使对象可以像数组一样进行foreach循环
Aug 09 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
php通过function_exists检测函数是否存在的方法
Mar 18 PHP
PHP常用技巧汇总
Mar 04 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
php使用 readfile() 函数设置文件大小大小的方法
Aug 11 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 PHP
通过代码实例解析PHP session工作原理
Dec 11 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
ini_set的用法介绍
2014/01/07 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
php对数组内元素进行随机调换的方法
2015/05/12 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
2017/02/14 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
python3.6数独问题的解决
2019/01/21 Python
浅谈python常用程序算法
2019/03/22 Python
Python collections模块使用方法详解
2019/08/28 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
国际花店:Pickup Flowers
2020/04/10 全球购物
python+selenium小米商城红米K40手机自动抢购的示例代码
2021/03/24 Python
普通党员对照检查材料
2014/08/28 职场文书
2014年生产部工作总结
2014/12/17 职场文书
小学生学习保证书
2015/02/26 职场文书
工作能力自我评价2015
2015/03/05 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
windows系统搭建WEB服务器详细教程
2022/08/05 Servers