解析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数组的维度
Jun 10 PHP
PHP中对于浮点型的数据需要用不同的方法解决
Mar 11 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
ThinkPHP行为扩展Behavior应用实例详解
Jul 22 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 PHP
php+ajax制作无刷新留言板
Oct 27 PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 PHP
PHP中类的继承和用法实例分析
May 24 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
thinkphp3.2.3 分页代码分享
Jul 28 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
Centos7安装swoole扩展操作示例
Mar 26 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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
PHP session 会话处理函数
2016/06/06 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
js 单引号 传递方法
2009/06/22 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
Vue-Router的使用方法
2018/09/05 Javascript
Puppet的一些技巧
2018/09/17 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
在Python的循环体中使用else语句的方法
2015/03/30 Python
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
遗传算法python版
2018/03/19 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
python自定义函数def的应用详解
2020/06/03 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
环境工程毕业生自荐信
2013/11/17 职场文书
学生安全承诺书
2014/05/22 职场文书
会议欢迎标语
2014/06/30 职场文书
工作检讨书500字
2014/10/19 职场文书
六一儿童节致辞
2015/07/31 职场文书
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python