isPublic是打破登陸壁壘,可以跳過登陸判斷的功能。
在base.php的關系類中,是必不可少的。比如文章控制器,游客可以查看某文章,登陸后依然可以查看此文章。則可以避免同樣的代碼書寫到兩處。更好的實現權限控制。
isPublic可以設置為下列三中類型的值
1. bool
2. string
3. array[string,string]
當設置為BOOL類型時,是整個控制器都受到影響的。
當設置為STRING類型時,是字符串值對應的方法受到影響。
當設置為ARRAY[string,string]類型時,代表數組中的每個string對應的方法都將受到影響。
以下就是對isPublic判斷的關鍵代碼。
```
/**
* 是否是無需登錄即可訪問路徑
* @param Request $request
* @return bool
*/
public function isPublic(Request $request)
{
if ($this->isPublic === true){
return $this->isPublic;
}else{
if (is_array($this->isPublic)){
foreach ($this->isPublic as $item){
if ($request->action() == strtolower($item)){
return true;
}
}
}elseif (is_string($this->isPublic) && $this->isPublic == $request->action()){
return true;
}
}
return false;
}
```