欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

實(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ù)獲取的是類(lèi)名文件所在的真實(shí)目錄,根據(jù)類(lèi)名的頭字段判斷類(lèi)在哪個(gè)目錄下;

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

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

相關(guān)文章

  • 采用header定義為文件然后readfile下載(隱藏下載地址)

    采用header定義為文件然后readfile下載(隱藏下載地址)

    有時(shí)候我們?yōu)榱穗[藏真實(shí)的下載地址,我們通過(guò)采用header定義為文件然后readfile下載,但這樣會(huì)加大服務(wù)器的負(fù)擔(dān),一般不建議下載量比較大的文件
    2014-01-01
  • THINKPHP跨域報(bào)錯(cuò)的解決方案

    THINKPHP跨域報(bào)錯(cuò)的解決方案

    這篇文章主要介紹了THINKPHP跨域報(bào)錯(cuò)has been blocked by CORS policy: Response to preflight request doesn't pass access control check的解決方案,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Windows下利用Gvim寫(xiě)PHP產(chǎn)生中文亂碼問(wèn)題解決方法

    Windows下利用Gvim寫(xiě)PHP產(chǎn)生中文亂碼問(wèn)題解決方法

    昨天本來(lái)說(shuō)早點(diǎn)睡覺(jué)呢,沒(méi)想到一個(gè)在寫(xiě)PHP程序的時(shí)候發(fā)現(xiàn)出現(xiàn)的亂碼問(wèn)題又睡晚了,不過(guò)總算解決了。
    2011-04-04
  • PHP實(shí)現(xiàn)的常規(guī)正則驗(yàn)證helper公共類(lèi)完整實(shí)例

    PHP實(shí)現(xiàn)的常規(guī)正則驗(yàn)證helper公共類(lèi)完整實(shí)例

    這篇文章主要介紹了PHP實(shí)現(xiàn)的常規(guī)正則驗(yàn)證helper公共類(lèi),結(jié)合完整實(shí)例形式分析了php針對(duì)常規(guī)的電話(huà)、手機(jī)、郵箱、賬號(hào)等進(jìn)行正則驗(yàn)證的操作技巧,需要的朋友可以參考下
    2017-04-04
  • PHP錯(cuò)誤Cannot use object of type stdClass as array in錯(cuò)誤的解決辦法

    PHP錯(cuò)誤Cannot use object of type stdClass as array in錯(cuò)誤的解決辦法

    很多人在PHP輸出一個(gè)二維數(shù)組的時(shí)候出現(xiàn)“Fatal error: Cannot use object of type stdClass as array in……”。這篇文章主要介紹了該錯(cuò)誤的解決辦法,需要的朋友可以參考下
    2014-06-06
  • PHP與JavaScript針對(duì)Cookie的讀寫(xiě)、交互操作方法詳解

    PHP與JavaScript針對(duì)Cookie的讀寫(xiě)、交互操作方法詳解

    這篇文章主要介紹了PHP與JavaScript針對(duì)Cookie的讀寫(xiě)、交互操作方法,結(jié)合實(shí)例形式分析了php與javascript設(shè)置cookie、php讀取php及js設(shè)置的cookie、js讀取php及js設(shè)置的cookie等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • php向js函數(shù)傳參的幾種方法

    php向js函數(shù)傳參的幾種方法

    php向js函數(shù)傳參可以使用$_POST也可使用$_SESSION[' '],也可用echo語(yǔ)句進(jìn)行輸出
    2014-08-08
  • php常用的安全過(guò)濾函數(shù)集錦

    php常用的安全過(guò)濾函數(shù)集錦

    由于越來(lái)越多的項(xiàng)目開(kāi)始使用框架,所以,很多的程序員也不在關(guān)心安全的問(wèn)題!因?yàn)榭蚣芤呀?jīng)幫我們幾乎完美的處理了!但是,個(gè)人認(rèn)為,我們還是需要了解一下常用的安全處理函數(shù)!
    2014-10-10
  • PHP中$GLOBALS與global的區(qū)別詳解

    PHP中$GLOBALS與global的區(qū)別詳解

    今天小編就為大家分享一篇關(guān)于PHP中$GLOBALS與global的區(qū)別詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • PHP實(shí)現(xiàn)表單提交時(shí)去除斜杠的方法

    PHP實(shí)現(xiàn)表單提交時(shí)去除斜杠的方法

    這篇文章主要介紹了PHP實(shí)現(xiàn)表單提交時(shí)去除斜杠的方法,涉及php針對(duì)頁(yè)面表單提交元素過(guò)濾操作的相關(guān)技巧,需要的朋友可以參考下
    2016-12-12

最新評(píng)論