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下HTTP Response中的Chunked编码实现方法
Nov 19 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 PHP
深入解析php中的foreach函数
Aug 31 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
Mar 12 PHP
php中Swoole的热更新实现代码实例
Mar 04 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 Memcached应用实现代码
2010/02/08 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
destoon官方标签大全
2014/06/20 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
为vue-router懒加载时下载js的过程中添加loading提示避免无响应问题
2018/04/03 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
mpvue 项目初始化及实现授权登录的实现方法
2020/07/20 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
python+django+sql学生信息管理后台开发
2018/01/11 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
python实现趣味图片字符化
2019/04/30 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
python Django里CSRF 对应策略详解
2019/08/05 Python
使用python去除图片白色像素的实例
2019/12/12 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
"引用"与指针的区别是什么
2016/09/07 面试题
工程预算与管理应届生求职信
2013/10/06 职场文书
护士专业推荐信
2013/11/02 职场文书
本科毕业生的求职信范文
2013/11/20 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
人事局接收函
2015/01/31 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
MySQL GRANT用户授权的实现
2021/06/18 MySQL
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js