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
php5新改动之短标记启用方法
Sep 11 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
May 28 PHP
php中最简单的字符串匹配算法
Dec 16 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 PHP
PHP实现的装箱算法示例
Jun 23 PHP
php微信公众号开发之翻页查询
Oct 20 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
laravel按天、按小时,查询数据的实例
Oct 09 PHP
如何用Laravel包含你自己的帮助函数
May 27 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上传文件常见问题总结
2015/02/03 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
Bootstrap Table使用方法详解
2016/08/01 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
Vue核心概念Getter的使用方法
2019/01/18 Javascript
python求crc32值的方法
2014/10/05 Python
python logging日志模块的详解
2017/10/29 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
python将字符串转换成json的方法小结
2019/07/09 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
澳大利亚一站式数码相机商店:CameraPro
2020/03/09 全球购物
ajax是什么及其工作原理
2012/02/08 面试题
简历中求职的个人自我评价
2013/12/03 职场文书
微笑服务标语
2014/06/24 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
vue实现可拖拽的dialog弹框
2021/05/13 Vue.js
一文搞懂Python Sklearn库使用
2021/08/23 Python