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 相关文章推荐
第七节 类的静态成员 [7]
Oct 09 PHP
PHP安装攻略:常见问题解答(三)
Oct 09 PHP
解析ajax事件的调用顺序
Jun 17 PHP
php获取中文拼音首字母类和函数分享
Apr 24 PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
PHP异常处理Exception类
Dec 11 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
php登录超时检测功能实例详解
Mar 21 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
Mar 18 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基础陷阱题(变量赋值)
2012/09/12 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
package.json文件配置详解
2017/06/15 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
JavaScript中创建原子的方法总结
2018/08/26 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
wxpython 学习笔记 第一天
2009/02/09 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
一个SQL面试题
2014/08/21 面试题
会务接待方案
2014/02/27 职场文书
酒店管理求职信范文
2014/04/06 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
房屋出租委托书格式
2014/09/23 职场文书
综治维稳工作汇报
2014/10/27 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
2015感人爱情寄语
2015/02/26 职场文书
求职信格式范文
2015/03/19 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
总结几个非常实用的Python库
2021/06/26 Python
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python