本文目錄
- 一、響應【重點】
-
- 1.1 正常響應:
- 1.2 ajax請求的響應
- 1.3 跳轉響應(重定向)
- 二、會話控制(記憶)
-
- 2.1 使用Session類
- 三、緩存操作(記憶)
-
- 3.1 設定緩存
-
- 3.1.1 使用put
- 3.1.2 使用add
- 3.2 擷取緩存資料
- 3.3 删除緩存資料
- 四、緩存數值的增加 / 減少
- 五、擷取并存儲(重點)
一、響應【重點】
在laravel中,相應正常情況下有2個類型:正常的直接響應,另外一個是ajax的響應。
其中展示視圖以及直接響應字元串都屬于正常的響應。
1.1 正常響應:
展示視圖:
return view('welcome');
直接傳回某個字元串:
return 'hello world';
1.2 ajax請求的響應
文法:
return response() -> json(需要json輸出的資料);
// 資料是數組格式,對象也可以
例:建立一個路由,通路對應的頁面之後,擷取
member
表資訊,頁面輸出json格式的響應。
1、建立路由
/member
2、建立需要的方法并擷取基本資料
效果:
1.3 跳轉響應(重定向)
在有一些頁面,例如同步添加操作,完成操作之後不能停留在目前頁面,最好做一個跳轉操作,也就是需要一個跳轉的響應。
兩個挑戰方式任選一個:
1、
return redirect(路由) -> withErrors([]);
該參數的路由可以是完整的請求路由,也可以是通過route方法+别名擷取的路由。
2、
return redirect() -> to(路由);
簡寫成:
return redirect(路由)
錯誤資訊的擷取與之前自動驗證那裡的方式一樣,通過 $errors
變量來擷取即可。
二、會話控制(記憶)
常見應用:增删改查
session
預設存到檔案中
session
檔案的目錄:
storage\framework\sessions
2.1 使用Session類
控制器頭部引用
use Illuminate\Support\Facades\Session;
由于session類在app.php中已經定義好别名,
是以在控制器中引入到時候可以直接
use Session
在控制器中直接引入
session
Session::put(‘key’, ‘value’); Session中存儲一個變量
$value = Session::get(‘key’); Session中擷取一個變量
$value = Session::get(‘key’, ‘default’); Session中擷取一個變量或傳回一個預設值(如果變量不存在)
$value = Session::get(‘key’, function () {return ‘default’;});
Session::all(); Session中擷取所有變量
Session:has(‘users’); 檢查一個變量是否在Session中存在
Session::forget(‘key’); Session中删除一個變量
Session:flush(); Session中删除所有變量
補充:session方法也可以在視圖中使用,如:
{{Session::get('code')}};
三、緩存操作(記憶)
Laeavel
為不同的緩存系統提供了統一的
API
,緩存配置位于
config/cache.php
。在該檔案中你可以指定在應用中預設使用哪個緩存驅動。
Laravel
目前支援主流的緩存後端如
Memcached
和
Redis
等。
主要方法:
Cache::put()
Cache::get()
Cache::add()
Cache::pull()
Cache::forever()
Cache::forget()
Cache::has()
系統預設是使用檔案緩存,其緩存檔案存儲到位置位于(
storage/framework/cache/data
)
3.1 設定緩存
文法:
Cache::put('key', 'value', $minutes)
Key:鍵
Value:值
$minutes:有效期,機關是分鐘
注意:如果用的是put,該鍵已經存在,則直接覆寫,有效期必須設定,機關是分鐘。
文法:
Cache::add('key', 'value', $minutes);
Key:鍵
Value:值
$minutes:有效期,機關是分鐘
注意:add方法隻會在緩存項不存在的情況下添加資料到緩存,如果資料被成功添加到緩存傳回true,否則傳回false。
3.1.1 使用put
定義路由:
定義方法:
在頁面中通路此路由:
效果:
3.1.2 使用add
效果:
驗證了add如果有這個鍵則不會覆寫。
永久存儲資料
forever
方法用于持久化存儲資料到緩存,這些值必須通過forget方法手動從緩存中移除。
3.2 擷取緩存資料
Cache門面的get方法用于從緩存中擷取緩存項,如果緩存項不存在,傳回null。如果需要的話可以傳遞第二個參數到get方法指定緩存項不存在時傳回的自定義預設值:
$value = Cache::get(‘key’); 擷取指定的key值。
$value = Cache::get(‘key’, ‘default’); 擷取指定的key值,如果不存在,則使用預設值。
可以傳遞一個匿名函數作為預設值,如果緩存項不存在的話閉包的結果将會被傳回。傳遞匿名函數允許你可以從資料庫或其他外部服務擷取預設值:
$value = Cache::get('key', function (){
return DB::table(...) -> get();
})
檢查緩存項是否存在:
if (Cache::has('key')) {
}
3.3 删除緩存資料
文法:
$value = Cache::pull('key');
從緩存中擷取緩存項然後删除,如果緩存不存在的話傳回null,一般設定一次性的存儲的資料。
文法:
Cache::forget('key');
使用forget方法從緩存中移除緩存項資料
文法:
Cache::flush();
使用flush方法清除所有緩存;并且删除對應的目錄。
四、緩存數值的增加 / 減少
increment和decrement方法可用于調整緩存中的整型數值。這兩個方法都可以接收第二個參數來指明緩存項數值增加和減少的樹木:一般會用作計數器(參考一般不怎麼做)。
Cache::increment(‘key’);
Cache::increment(‘key’, $amount);
Cache::decrement(‘key’);
Cache::decrement(‘key’, $amount);
例:
效果:
注意:如果用計數器,則在初始化的時候不能使用put和forever,因為這個2個方法都會重複的初始化計數器。
五、擷取并存儲(重點)
有時候可能想要擷取緩存項,但如果請求的緩存項不存在時給它儲存一個預設值。例如,可能想要從緩存中擷取所有使用者,或者如果它們不存在的話,從資料庫擷取它們并将其添加到緩存中,你可以通過使用
Cache::remember
方法實作:
$value = Cache::remember('key', $minutes, function () {
Cache::add('key', 'value', $minutes)
return DB::table('users') -> get();
})
比較典型的操作就是在擷取微信的access_token的時候可以使用,原因是access_token本身一天隻有2000次的配額,而其有7200s的有效期,在有效期内可以不用去重新整理請求。
demo:
在學習的php的路上,如果你覺得本文對你有所幫助的話,那就請關注點贊評論三連吧,謝謝,你的肯定是我寫博的另一個支援。