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的配置文件php.ini
Oct 09 PHP
CodeIgniter php mvc框架 中国网站
May 26 PHP
简单的cookie计数器实现源码
Jun 07 PHP
php中的比较运算符详解
Oct 28 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
php多个文件及图片上传实例详解
Nov 10 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
PHP中的流(streams)浅析
Jul 02 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
Oct 08 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
Feb 23 PHP
PHP连接及操作PostgreSQL数据库的方法详解
Jan 30 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新手上路(十二)
2006/10/09 PHP
非常好用的两个PHP函数 serialize()和unserialize()
2012/02/04 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
什么是JavaScript
2009/08/13 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
Bootstrap插件全集
2016/07/18 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
python计数排序和基数排序算法实例
2014/04/25 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
Python 中的 else详解
2016/04/23 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
高三体育教学反思
2014/01/29 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
电气工程自动化求职信
2014/03/14 职场文书
求职教师自荐书
2014/06/19 职场文书
岗位职责范本大全
2015/02/26 职场文书
企业计划生育责任书
2015/05/09 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript