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二维数组的去重问题解析
Jul 17 PHP
关于php连接mssql:pdo odbc sql server
Jul 20 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
PHP基础知识介绍
Sep 17 PHP
php对数组排序的简单实例
Dec 25 PHP
php array_merge函数使用需要注意的一个问题
Mar 30 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
PHP数据库处理封装类实例
Dec 24 PHP
PHP微信PC二维码登陆的实现思路
Jul 13 PHP
thinkPHP5框架导出Excel文件简单操作示例
Aug 03 PHP
PHP7 错误处理机制修改
Mar 09 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
图形数字验证代码
2006/10/09 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
JS获取几种URL地址的方法小结
2014/02/26 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
JavaScript闭包的简单应用
2017/09/01 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
opencv python统计及绘制直方图的方法
2019/01/21 Python
django创建超级用户过程解析
2019/09/18 Python
Python Process多进程实现过程
2019/10/22 Python
Python timeit模块的使用实践
2020/01/13 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
经典c++面试题二
2015/08/14 面试题
精彩的演讲稿开头
2014/05/08 职场文书
五水共治一句话承诺
2014/05/30 职场文书
安全宣传标语
2014/06/10 职场文书
2015年重阳节主持词
2015/07/04 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
python实现MD5进行文件去重的示例代码
2021/07/09 Python
nginx中proxy_pass各种用法详解
2021/11/07 Servers