簡體   English   中英

在 Laravel 服務容器中存儲可能為空的實例

[英]Storing instances in Laravel Service Container that may be null

我試圖在 Laravel 服務容器中存儲當前部門的一個實例,但有時這個部門可能是null

部門本身從會話加載並檢索如下:

private function resolveCurrentDepartmentFromSession(Request $request)
{
    $departmentId = $request->session()->pull(self::CURRENT_DEPARTMENT);

    return Department::find($departmentId);
}

我通過以下方式將其存儲在服務容器中:

App::instance('Department\Current', $department);

並將其檢索為:

$department = App::bound('Department\Current') ? App::make('Department\Current') : null;

有沒有辦法解析實例 IF 集,否則返回null App::instanceIfSet('Department\\Current') 或者我應該避免在服務容器中存儲“有時為空”的值嗎? 我可以創建一個類CurrentDepartment將它存儲為一個屬性,並將其作為單例存儲在容器中,但想知道我是否首先遺漏了關於服務容器的一些重要內容。

您可以使用optional助手:

return optional(Department::find($departmentId));

現在,當您調用綁定類時,您嘗試針對它訪問的任何屬性在它為 null 時也將返回 null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM