中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ZF2自動加載第三方類庫

Zend Framework 2.0的自動加載機制主要基于PSR-0標準,引入新的第三方庫只需要注冊新的命名空間即可。

比如加載ZendOAuth模塊,下載后放于vendor/ZendOAuth,然后在依賴的模塊Module.php中加入一行即可:

public function getAutoloaderConfig(){    return array(        'Zend\Loader\StandardAutoloader' => array(            'namespaces' => array(                'ZendOAuth' => __DIR__ . '/../../vendor/ZendOAuth/library/ZendOAuth',                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,            ),        ),    );}

ZF2加載非PSR-0標準庫

不過由于第三方庫質(zhì)量參差不齊,并不一定所有的庫都遵循PSR-0標準,ZF2也提供了非PSR-0標準庫的自動加載方式,可以在Zend\Loader中新增ClassMapAutoloader,以鍵值對的形式引入需要加載的第三方庫文件。下面以一個正好碰到的實例說明:

GeoIP地理位置查詢+ZF2實例

項目中正好有一個簡單的需求,要根據(jù)用戶IP顯示用戶所在地,IP來源可能是全球范圍,所以需要找一個IP與地理位置對應的數(shù)據(jù)庫:GeoIP

GeoIP數(shù)據(jù)庫由MaxMind公司負責維護,免費版可以獲得精確到城市一級的IP與地理位置對應數(shù)據(jù),對于一般的應用來說已經(jīng)夠用了。

首先需要下載GeoIP數(shù)據(jù)庫,選擇Binary GeoLite City版,同時還需要下載PHP GeoIP數(shù)據(jù)庫接口,為了更好的兼容性選擇了純php版本的GeoIP接口

最后項目中這樣放置:

project/--data/----GeoLiteCity.dat--module/----MyModule/------Module.php------vendor/--------GeoIP/----------geoip.inc----------geoipcity.inc----------geoipregionvars.php

在模塊Module.php中首先引入ClassMapAutoloader,并在同目錄下放置一個autoload_classmap.php文件

public function getAutoloaderConfig(){    return array(        'Zend\Loader\ClassMapAutoloader' => array(            __DIR__ . '/autoload_classmap.php',        ),        'Zend\Loader\StandardAutoloader' => array(            'namespaces' => array(                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,            ),        ),    );}

在autoload_classmap.php文件中需要制定第三方庫文件的位置

<?phpreturn array(    'GeoIP' => __DIR__ . '/vendor/GeoIP/geoipcity.inc',);

最后在模塊Controller中就可以通過自動加載機制直接使用:

public function geoAction(){    $city = 'unkown';    $geoData = __DIR__ . '/../../../../../data/databases/GeoLiteCity.dat';    new \GeoIP();    $ip = $_SERVER['REMOTE_ADDR'];    $gi = geoip_open($geoData, GEOIP_STANDARD);    $record = geoip_record_by_addr($gi, $ip);    if(isset($record->city)){        $city = $record->city;    }    geoip_close($gi);    return array(        'city' => $city    );}

ZF2自動加載下劃線分割的PSR-0類庫

以下劃線作為類名分隔符也很常見,這一種類庫的加載在ZF2中仍然使用StandardAutoloader,不過需要指定的不是Namespaces而是Prefixes,比如加載PHP-Resque這個項目,在Module.php中加入:

public function getAutoloaderConfig(){  return array(     'Zend\Loader\ClassMapAutoloader' => array(        __DIR__ . '/autoload_classmap.php',     ),     'Zend\Loader\StandardAutoloader' => array(        'prefixes' => array(           'Resque' => __DIR__ . '/../../vendor/Resque/lib/Resque',        ),     ),  );}

同時在autoload_classmap中加入

return array(    'Resque' => __DIR__ . '/../../vendor/Resque/lib/Resque.php',);

即可。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【ZF2第一節(jié)】ZF2(Zend framework 2)啟動流程和框架配置分析 | 粒子博客
自動加載
PHP簡單導出Excel表格
PHP實現(xiàn)在MongoDB模擬Auto Increment
php獲取目錄所有文件與所有目錄保存到數(shù)組程序
PHP遞歸與迭代的區(qū)別與聯(lián)系 筋斗云網(wǎng)絡
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服