萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php自動加載autoload機制示例分享

php自動加載autoload機制示例分享

 這篇文章主要介紹了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  
copyright © 萬盛學電腦網 all rights reserved