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的FTP学习(一)
Oct 09 PHP
PHP 存取 MySQL 数据库的一个例子
Oct 09 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
Oct 14 PHP
php网站被挂木马后的修复方法总结
Nov 06 PHP
thinkphp制作404跳转页的简单实现方法
Sep 22 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
PDO::rollBack讲解
Jan 29 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
Apr 23 PHP
laravel 多图上传及图片的存储例子
Oct 14 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一个解析字符串排列数组的方法
2015/05/12 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
React中嵌套组件与被嵌套组件的通信过程
2018/07/11 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
python中json格式数据输出的简单实现方法
2016/10/31 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
Python应用库大全总结
2018/05/30 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
树莓派动作捕捉抓拍存储图像脚本
2019/06/22 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
python 如何利用argparse解析命令行参数
2020/09/11 Python
Python实现EM算法实例代码
2020/10/04 Python
Python 内存管理机制全面分析
2021/01/16 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
瑞士国际航空官网:SWISS
2016/07/21 全球购物
毕业自我鉴定总结
2014/03/24 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
五一劳动节慰问信
2015/02/14 职场文书
电影建国大业观后感
2015/06/01 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL