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 相关文章推荐
IP138 IP地址查询小偷实现代码
Feb 15 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
Jul 13 PHP
一个简单的PHP验证码实现代码
May 10 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
php+mysqli数据库连接的两种方式
Jan 28 PHP
Mac OS下配置PHP+MySql环境
Feb 25 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
php  单例模式详细介绍及实现源码
Nov 05 PHP
PHP使用Redis替代文件存储Session的方法
Feb 15 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 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的输出:缓存并压缩动态页面
2013/06/11 PHP
php全角字符转换为半角函数
2014/02/07 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
PHP常量define和const的区别详解
2019/05/18 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
2013/06/24 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
2013/12/31 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
python操作MySQL数据库具体方法
2013/10/28 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
Python3.7 读取 mp3 音频文件生成波形图效果
2019/11/05 Python
python实现简易淘宝购物
2019/11/22 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
财务会计专业求职信范文
2013/12/31 职场文书
人事任命书怎么写
2014/06/05 职场文书
校庆口号
2014/06/20 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
建党伟业的观后感
2015/06/01 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python