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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
php给每个段落添加空格的方法
Mar 20 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
PHP类的特性实例分析
Sep 28 PHP
thinkphp分页实现效果
Oct 13 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
Oct 03 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
如何去掉文章里的 html 语法
2006/10/09 PHP
一篇入门的php Class 文章
2007/04/04 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
JS &amp; JQuery 动态添加 select option
2016/06/08 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
vue favicon设置以及动态修改favicon的方法
2018/12/21 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
微信小程序实现Swiper轮播图效果
2019/11/22 Javascript
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
对pandas处理json数据的方法详解
2019/02/08 Python
python3图片文件批量重命名处理
2019/10/31 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
Python2与Python3关于字符串编码处理的差别总结
2020/09/07 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
思想政治自我鉴定
2013/10/06 职场文书
打架检讨书300字
2014/02/02 职场文书
学生会部长竞聘书
2014/03/31 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
社团活动总结格式
2014/08/29 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书