解析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制作静态网站的模板框架(一)
Oct 09 PHP
PHP下对数组进行排序的函数
Aug 08 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 PHP
项目中应用Redis+Php的场景
May 22 PHP
php实现的读取CSV文件函数示例
Feb 07 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
Mar 19 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
Apr 15 PHP
php将字符串转换为数组实例讲解
May 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
PHP面向对象分析设计的经验原则
2008/09/20 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
Laravel 5框架学习之Eloquent 关系
2015/04/09 PHP
php实现文件预览功能
2017/05/23 PHP
面向对象设计模式的核心法则
2013/11/10 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
学习Vue组件实例
2018/04/28 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
Python函数调用追踪实现代码
2020/11/27 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
HTML5 Canvas锯齿图代码实例
2014/04/10 HTML / CSS
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
工商企业管理实习自我鉴定
2013/12/04 职场文书
幼儿园亲子活动总结
2014/04/26 职场文书
企业负责人任命书
2014/06/05 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
Java 超详细讲解设计模式之中的抽象工厂模式
2022/03/25 Java/Android