最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP框架自動(dòng)加載類文件原理詳解

 更新時(shí)間:2017年06月06日 16:17:49   作者:zhuojiang  
這篇文章主要為大家詳細(xì)介紹了PHP框架自動(dòng)加載類文件原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

描述:公司項(xiàng)目PHP用作中間轉(zhuǎn)發(fā)層(接收http請(qǐng)求,用 socket跟c++做通信),由于代碼沒有用到框架,這些東西自然就是之前的人自己寫的。最近需要對(duì)這個(gè)底層進(jìn)行優(yōu)化,于是便看了下這部分的代碼。

目的:這塊代碼的主要作用是把主目錄下的所有插件類一次性全部加載進(jìn)來。當(dāng)使用尚未被定義的類(class)和接口(interface)時(shí)自動(dòng)去加載。通過注冊(cè)自動(dòng)加載器,腳本引擎在 PHP 出錯(cuò)失敗前有了最后一個(gè)機(jī)會(huì)加載所需的類。

實(shí)現(xiàn)方法:主要用到PHP函數(shù)__autoload()

詳細(xì):

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
set_include_path($_SERVER['Root_Path'] . '/libs' . PATH_SEPARATOR .
   $_SERVER['Root_Path'] . '/lib' . PATH_SEPARATOR .
   get_include_path() );
if (!function_exists('__autoload')) {
 function __autoload($className)
 {
 ///優(yōu)化包含路徑
 $path=_getRootPath($className);
 $revpath=strtr($className, '_', '/'). '.php';
 $rootpath=$path.$revpath;
 file_exists($rootpath)?include($rootpath):@include($revpath);
 }
}

/**
 *得到根路徑*
 */
function _getRootPath($classname)
{
 $pearpath=$_SERVER["PHP_PEAR_PATH"].'/';
 $libpath=$_SERVER['Root_Path'] . '/lib/';
 $libspath=$_SERVER['Root_Path'] . '/libs/';

 if(strpos($classname,'Zend_')===0) return $pearpath; ///zend 框架路徑
 if(strpos($classname,'DB_')===0 || strpos($classname,'Interface_')===0 || strpos($classname,'Others_')===0 || strpos($classname,'Pay_')===0 || strpos($classname,'PHPMailer_')===0 ) return $libspath;
 return $libpath;
}

其中_getRootPath($classname)函數(shù)獲取的是類名文件所在的真實(shí)目錄,根據(jù)類名的頭字段判斷類在哪個(gè)目錄下;

如果類能在這些目錄下找到,類在使用前就會(huì)被加載。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

高台县| 宁南县| 恭城| 于田县| 临沭县| 兰州市| 肇州县| 承德县| 石河子市| 青冈县| 四会市| 冷水江市| 宜兰市| 饶平县| 灵川县| 平南县| 永新县| 松溪县| 饶阳县| 应城市| 长子县| 罗山县| 黑河市| 县级市| 永宁县| 江川县| 阿克陶县| 长泰县| 海门市| 吉木萨尔县| 札达县| 黄石市| 贡嘎县| 珠海市| 长沙县| 新竹市| 西华县| 临沭县| 弥勒县| 扶风县| 渭源县|