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学习 字符串课件
Jun 15 PHP
phplock(php进程锁) v1.0 beta1
Nov 24 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
ThinkPHP实现批量删除数据的代码实例
Jul 02 PHP
php使用递归函数实现数字累加的方法
Mar 16 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
PHP控制反转(IOC)和依赖注入(DI)
Mar 13 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP+ajax实现获取新闻数据简单示例
May 08 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 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
中国的第一台收音机
2021/03/01 无线电
Email+URL的判断和自动转换函数
2006/10/09 PHP
一步一步学习PHP(4) php 函数 补充2
2010/02/15 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
2015/01/13 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
node crawler如何添加promise支持
2020/02/01 Javascript
python使用udp实现聊天器功能
2018/12/10 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
pywinauto自动化操作记事本
2019/08/26 Python
Django框架 信号调度原理解析
2019/09/04 Python
python set集合使用方法解析
2019/11/05 Python
Python爬虫爬取杭州24时温度并展示操作示例
2020/03/27 Python
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
美赞臣营养马来西亚旗舰店:Enfagrow马来西亚
2019/07/26 全球购物
建筑工程专业毕业生自荐信
2013/10/19 职场文书
国际贸易专业推荐信
2013/11/15 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
二手房购房协议书范本
2014/10/05 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
校园广播稿范文
2015/08/19 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书