解析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入门学习知识点三 PHP上传
Jul 14 PHP
Thinkphp多文件上传实现方法
Oct 31 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Dec 14 PHP
php安装dblib扩展,连接mssql的具体步骤
Mar 02 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
Jul 20 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
PHP实现基本留言板功能原理与步骤详解
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
php使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
JS 判断代码全收集
2009/04/28 Javascript
javascript计时器详解
2015/02/28 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
Python 字符串定义
2009/09/25 Python
Python计算字符宽度的方法
2016/06/14 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
使用python实现BLAST
2018/02/12 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
浅谈Python 递归算法指归
2019/08/22 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
美国在线购物频道:Shop LC
2019/04/21 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
三维科技面试题
2013/07/27 面试题
GC是什么?为什么要有GC?
2013/12/08 面试题
酒店采购员岗位职责
2014/03/14 职场文书
导游词300字
2015/02/13 职场文书
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫
vue自定义右键菜单之全局实现
2022/04/09 Vue.js