php自动加载autoload机制示例分享


Posted in PHP onFebruary 20, 2014

1,自定义函数

2,spl_autoload_register()

liuyuan@ebuinfo:/var/www/phpgcs/php_autoload$ ll ./*
-rw-rw-r-- 1 liuyuan liuyuan  800 Feb 19 11:39 ./func_autoload.php
-rw-rw-r-- 1 liuyuan liuyuan  906 Feb 19 11:28 ./spl_autoload.php./include:
total 16
drwxrwxr-x 2 liuyuan liuyuan 4096 Feb 19 11:42 ./
drwxrwxr-x 3 liuyuan liuyuan 4096 Feb 19 11:43 ../
-rw-rw-r-- 1 liuyuan liuyuan  142 Feb 19 11:42 aClass.php
-rw-rw-r-- 1 liuyuan liuyuan  143 Feb 19 11:42 bClass.php

首先看自定义函数方式:

<?php
    define('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '</ br>');
    print_r(get_included_files());
    echo EOL;
    print get_include_path();
    echo EOL;
    //set_include_path(get_include_path().PATH_SEPARATOR.'/var/www/ly_php/php_spl/include/');
    //set_include_path(dirname(__FILE__).'/include');
    //set_include_path(dirname(__FILE__).'/include/');    function __autoload($className){
        $filename = './include/'.$className.'.php';
        //$filename = './include/'.$className.'.php';
        //$filename = '/var/www/ly_php/php_spl/include/'.$className.'.php';
        if(file_exists($filename)){
            include_once $filename;
        }else{
            exit('no file');
        }
    }
    $a = new aClass();
    $b = new bClass();
    print_r(get_included_files());
?>

运行结果如下:

liuyuan@ebuinfo:/var/www/phpgcs/php_autoload$ php func_autoload.php 
Array
(
    [0] => /var/www/phpgcs/php_autoload/func_autoload.php
).:/usr/share/php:/usr/share/pear
aClass is loaded
bClass is loaded
Array
(
    [0] => /var/www/phpgcs/php_autoload/func_autoload.php
    [1] => /var/www/phpgcs/php_autoload/include/aClass.php
    [2] => /var/www/phpgcs/php_autoload/include/bClass.php
)

第二种方式:

<?php
    class myLoader{
        public static function autoload($className){
            $filename = './include/'.$className.'.php';
            if(file_exists($filename)){
                include_once $filename;
            }else{
                exit('no file');
            }
        }
    }    define('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
    spl_autoload_register(array('myLoader', 'autoload'));
    /**
    *__autoload 方法在 spl_autoload_register 后会失效,因为 autoload_func 函数指针已指向 spl_autoload 方法
    * 可以通过下面的方法来把 _autoload 方法加入 autoload_functions list
    */
    //spl_autoload_register( '__autoload' );
 
    error_reporting(E_ALL^E_NOTICE^E_WARNING^E_ERROR);
    error_reporting(E_NOTICE | E_WARNING );
    $a = new aClass();
    print_r(get_included_files());
    echo EOL;
    $b = new bClass();
    echo EOL;
?>

运行结果如下:

liuyuan@ebuinfo:/var/www/phpgcs/php_autoload$ php spl_autoload.php 
aClass is loaded
Array
(
    [0] => /var/www/phpgcs/php_autoload/spl_autoload.php
    [1] => /var/www/phpgcs/php_autoload/include/aClass.php
)bClass is loaded
PHP 相关文章推荐
php中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
浅析THINKPHP的addAll支持的最大数据量
Feb 03 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 PHP
详解cookie验证的php应用的一种SSO解决办法
Oct 20 PHP
php微信公众号开发之现金红包
Apr 16 PHP
PHP实现网站应用微信登录功能详解
Apr 11 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
Jul 03 PHP
YII2.0框架行为(Behavior)深入详解
Jul 26 PHP
php多文件上传下载示例分享
Feb 20 #PHP
php分页代码学习示例分享
Feb 20 #PHP
php多文件上传实现代码
Feb 20 #PHP
php图片缩放实现方法
Feb 20 #PHP
php跨域cookie共享使用方法
Feb 20 #PHP
PHP中redis的用法深入解析
Feb 20 #PHP
MongoDB在PHP中的常用操作小结
Feb 20 #PHP
You might like
支持中文的php加密解密类代码
2011/11/27 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
Js+Flash实现访问剪切板操作
2012/11/20 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
JavaScript中的子窗口与父窗口的互相调用问题
2017/02/08 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
python多线程之事件Event的使用详解
2018/04/27 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
介绍一下#error预处理
2015/09/25 面试题
存储过程和sql语句的优缺点
2014/07/02 面试题
linux面试题参考答案(4)
2014/09/21 面试题
工商管理本科毕业生求职信范文
2013/10/05 职场文书
纠纷协议书
2014/04/16 职场文书
给校长的建议书400字
2014/05/15 职场文书
班主任寄语2015
2015/02/26 职场文书
罚款通知怎么写
2015/04/22 职场文书
二审答辩状格式
2015/05/22 职场文书
初中同学会致辞
2015/08/01 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书