• 技术文章 >后端开发 >php教程

    php自动加载autoload机制示例分享_php实例

    2016-05-17 08:48:59原创615
    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

    首先看自定义函数方式:

    复制代码 代码如下:

    define('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '');
    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
    )

    第二种方式:

    复制代码 代码如下:

    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 : '
    ');

    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
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:自动加载 autoload
    上一篇:php判断ip黑名单程序代码实例_php实例 下一篇:php多文件上传下载示例分享_php实例
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 20+值得了解的PHP面试题(附答案分析)• 【php】PHP.ini配置文件中文• PHP和MySQL入门(4)• PHP执行过程,php执行_PHP教程• PHP错误Warning:mysql_query()解决方法,warningmysql_query_PHP教程
    1/1

    PHP中文网