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 相关文章推荐
递归列出所有文件和目录
Oct 09 PHP
php include的妙用,实现路径加密
Jul 29 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
PHP 作用域解析运算符(::)
Jul 27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
Jun 30 PHP
php+mysql数据库实现无限分类的方法
Dec 12 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 PHP
关于php几种字符串连接的效率比较(详解)
Feb 22 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
Aug 10 PHP
Yii框架的布局文件实例分析
Sep 04 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 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
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
python获取文件扩展名的方法
2015/07/06 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
Python实现自动上京东抢手机
2018/02/06 Python
python随机取list中的元素方法
2018/04/08 Python
Django添加sitemap的方法示例
2018/08/06 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
Python发展史及网络爬虫
2019/06/19 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
游戏商店:Eneba
2020/04/25 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
教育技术职业规划范文
2014/03/04 职场文书
小学二年级学生评语
2014/04/21 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
寒假安全保证书
2015/02/28 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书