php自動(dòng)加載autoload機(jī)制示例分享
更新時(shí)間:2014年02月20日 17:06:08 作者:
這篇文章主要介紹了php自動(dòng)加載autoload機(jī)制示例,文件結(jié)構(gòu)如下,2種方式實(shí)現(xiàn)自動(dòng)加載,需要的朋友可以參考下
1,自定義函數(shù)
2,spl_autoload_register()
復(fù)制代碼 代碼如下:
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
首先看自定義函數(shù)方式:
復(fù)制代碼 代碼如下:
<?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());
?>
運(yùn)行結(jié)果如下:
復(fù)制代碼 代碼如下:
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
)
第二種方式:
復(fù)制代碼 代碼如下:
<?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 后會(huì)失效,因?yàn)?autoload_func 函數(shù)指針已指向 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;
?>
運(yùn)行結(jié)果如下:
復(fù)制代碼 代碼如下:
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
相關(guān)文章
ThinkPHP連接數(shù)據(jù)庫操作示例【基于DSN方式和數(shù)組傳參的方式】
這篇文章主要介紹了ThinkPHP連接數(shù)據(jù)庫操作,結(jié)合實(shí)例形式分析了thinkPHP基于DSN方式和數(shù)組傳參的方式進(jìn)行數(shù)據(jù)庫連接的實(shí)現(xiàn)步驟與屬性設(shè)置、控制器、模板使用等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
動(dòng)態(tài)表單驗(yàn)證的操作方法和TP框架里面的ajax表單驗(yàn)證
這篇文章主要介紹了動(dòng)態(tài)表單驗(yàn)證的操作方法和TP框架里面的ajax表單驗(yàn)證問題,需要的朋友可以參考下2017-07-07
PHP+MySQL實(shí)現(xiàn)對(duì)一段時(shí)間內(nèi)每天數(shù)據(jù)統(tǒng)計(jì)優(yōu)化操作實(shí)例
這篇文章主要介紹了PHP+MySQL實(shí)現(xiàn)對(duì)一段時(shí)間內(nèi)每天數(shù)據(jù)統(tǒng)計(jì)優(yōu)化操作,結(jié)合具體實(shí)例形式分析了php針對(duì)mysql查詢統(tǒng)計(jì)相關(guān)優(yōu)化操作技巧,需要的朋友可以參考下2018-03-03
Yii Framework框架使用PHPExcel組件的方法示例
這篇文章主要介紹了Yii Framework框架使用PHPExcel組件的方法,結(jié)合實(shí)例形式分析了Yii Framework框架中PHPExcel組件的下載、導(dǎo)入、調(diào)用等相關(guān)操作技巧,需要的朋友可以參考下2019-07-07
Win7環(huán)境下Apache連接MySQL提示連接已重置的解決辦法
這篇文章主要為大家詳細(xì)介紹了Win7環(huán)境下Apache連接MySQL提示“連接已重置”的解決辦法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05

