您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> php编程 >> 正文

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

作者:佚名    责任编辑:admin    更新时间:2022-06-22

 这篇文章主要介绍了php自动加载autoload机制示例,文件结构如下,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 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