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动态图像的创建
Oct 09 PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
ThinkPHP多语言支持与多模板支持概述
Aug 22 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
Feb 03 PHP
Yii框架表单模型和验证用法
May 20 PHP
php实现批量上传数据到数据库(.csv格式)的案例
Jun 18 PHP
php实现和c#一致的DES加密解密实例
Jul 24 PHP
thinkphp5.1框架容器与依赖注入实例分析
Jul 23 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 empty() 检查一个变量是否为空
2011/11/10 PHP
php-fpm配置详解
2014/02/12 PHP
php读取本地json文件的实例
2018/03/07 PHP
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
2018/02/02 jQuery
javascript中的this作用域详解
2019/07/15 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
python操作MySQL数据库的方法分享
2012/05/29 Python
使用python装饰器验证配置文件示例
2014/02/24 Python
Python import自定义模块方法
2015/02/12 Python
给Python入门者的一些编程建议
2015/06/15 Python
python3大文件解压和基本操作
2017/12/15 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
Python中的集合介绍
2019/01/28 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
python字符串的index和find的区别详解
2020/06/20 Python
this关键字的作用
2016/01/30 面试题
医学毕业生自我鉴定
2013/10/30 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
2014年路政工作总结
2014/12/10 职场文书
先进个人评语大全
2015/01/04 职场文书
个人更名证明
2015/06/23 职场文书
计算机教师工作总结
2015/08/13 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers