php自动加载autoload机制示例分享
发布时间:2020-12-12 20:04:26 所属栏目:PHP教程 来源:网络整理
导读: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./inc
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 : ' 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 ) 第二种方式: 代码如下: 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |