国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

基于laravel4.2的相關架構設計

2019-11-15 01:52:31
字體:
來源:轉載
供稿:網(wǎng)友
基于laravel4.2的相關架構設計

項目組不久前引進了laravel框架,本人參與了laravel的調(diào)研和項目架構設計。個人認為項目架構中基于laravel的有些設計還是比較實用和有借鑒性的,現(xiàn)將一些設計分享給大家,希望能和大家共同學習和探討。特別說明,本文并非對lavarel官方文檔的摘抄或總結。

1異常處理

1.1異常類

異常類統(tǒng)一放在app/lib/exception下,可以根據(jù)業(yè)務模塊再細分,對簡寫的異常類可采用一個文件多個異常類的形式,如:

class HttPRequestException extends Exception

{

}

class HttpResponseException extends Exception

{

}

1.2捕獲機制

可以在任意需要的地方做異常捕獲,如果不捕獲,異常將拋出至最外層。

拋出到最外層的異常,統(tǒng)一在app/start/global.php文件中定義handler

function handleException($code, $exception)

{

return Decorate::failed($code, null, $exception->getFile() . ':' . $exception->getLine() . ',' . $exception->getMessage());

}

App::error(function(HttpRequestException $exception, $code)

{

return handleException(-1007, $exception);

});

App::error(function(HttpResponseException $exception, $code)

{

return handleException(-1008, $exception);

});

1.3拋出機制

可在任意可觸發(fā)異常的地方,拋出異常。

RequestLog::request($url, $data, $start, $content);

if (!$content) {

throw new HttpRequestException($url . ':' . $data);

}

2日志記錄

分三類log:接口調(diào)用log(RequestLog)、業(yè)務log(LogicaltLog)、調(diào)試log(DebugLog)。日志統(tǒng)一放在app/lib/log目錄下。其中RequestLog可用于接口調(diào)用的統(tǒng)計分析,LogicaltLog可以用于記錄邏輯數(shù)據(jù),DebugLog用于輸出調(diào)試信息(也可直接用laravel自帶的/Log類)。

3任務隊列

Laravle封裝了Queue用來做任務隊列,用來做異步處理非常方便。支持: "sync", "beanstalkd", "sqs", "iron", "redis"五種形式。建議用redis,超級好用。

隊列使用方法只要將任務類的類名壓入隊列,并且該任務類實現(xiàn)了fire方法,就可以使用了。

在fire($job, $data)里,我們還可以拿到任務的嘗試次數(shù)$job->attempts() ,可以延遲任務響應時間$job->release(30);還可以刪掉任務$job->delete();。

最后特別提醒,可以通過laravel框架的artisan工具啟動隊列監(jiān)聽:

php ../../../../artisan --env=devqueue:listen&

4 Filter

Filter可以用來做參數(shù)驗證、登陸態(tài)檢查、接口調(diào)用日志。

4.1參數(shù)檢查

在app /config/param.php里定義各接口的參數(shù)驗證條件。驗證條件自行參考laravel文檔。

然后在app /Filter.php的Before里,對每一個調(diào)用進行參數(shù)驗證,如:

App::before(function($request))

{

…

$res = Param::verification(Input::all(), $standard);

}

4.2接口調(diào)用日志

App::after(function($request, $response)

{

RequestLog::log($request, $response);

});

5環(huán)境切換

通常,我們的框架會有好幾套環(huán)境:正式、測試、本地、沙盒等,不同的環(huán)境配置肯定會有不同。Laravel允許在進程start的時候,指定當前配置環(huán)境,從而做到不同環(huán)境之間的自動切換。

1) 不同的環(huán)境配置目錄:

app/config/dev

app/config/formal

app/config/local

2)bootstrap/start.php指定需要的環(huán)境,例如測試環(huán)境dev

$env = $app->detectEnvironment(‘dev’)

3) 如何自動切換?

我們可以做到根據(jù)接口請求訪問的域名不同,指定相應的環(huán)境。比如dev.domain.com為測試環(huán)境,domain.com為正式環(huán)境。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 连山| 廉江市| 三明市| 广南县| 新津县| 周宁县| 五家渠市| 洪湖市| 沙坪坝区| 金坛市| 盐城市| 应用必备| 凤城市| 玉屏| 石阡县| 南丰县| 汾西县| 瓮安县| 敦化市| 五原县| 桑日县| 通河县| 确山县| 区。| 成安县| 娄底市| 宜州市| 美姑县| 富平县| 甘洛县| 乾安县| 页游| 贵南县| 鲁山县| 阳高县| 江门市| 乳山市| 温州市| 齐齐哈尔市| 深水埗区| 沁源县|