首页 > 编程 > PHP > 正文

PHP基础之Autoload

2020-03-22 18:12:38
字体:
来源:转载
供稿:网友
  • PHP的自动加载autoload机制很重要,这里做2个小练习

    原文:http://www.cnblogs.com/phpgcs

    文件结构如下,2种方式实现自动加载

    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 16drwxrwxr-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($html' target='_blank'>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/pearaClass is loadedbClass is loadedArray(    [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)

      

    原文:http://www.cnblogs.com/phpgcs

    第二种方式:

    <?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 loadedArray(    [0] => /var/www/phpgcs/php_autoload/spl_autoload.php    [1] => /var/www/phpgcs/php_autoload/include/aClass.php)bClass is loaded

      

    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表