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与C#分别格式化文件大小的代码
May 14 PHP
PHP正则表达式之定界符和原子介绍
Oct 05 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
Jun 28 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 PHP
wampserver改变默认网站目录的办法
Aug 05 PHP
php轻量级的性能分析工具xhprof的安装使用
Aug 12 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 PHP
php实现的后台表格分页功能示例
Oct 23 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 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
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
对xmlHttp对象的理解
2011/01/17 Javascript
js二级地域选择的实现方法
2013/06/17 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
利用ctypes提高Python的执行速度
2016/09/09 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
python opencv实现运动检测
2018/07/10 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
new修饰符是起什么作用
2015/06/28 面试题
如何执行一个shell程序
2012/11/23 面试题
爱牙日宣传活动总结
2015/02/05 职场文书
校运会通讯稿
2015/07/18 职场文书