【问题标题】:Storing instances in Laravel Service Container that may be null在 Laravel 服务容器中存储可能为空的实例
【发布时间】:2019-12-18 15:32:30
【问题描述】:

我正在尝试将当前部门的实例存储在 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 类,将其存储为属性并将其作为 Singleton 存储在容器中,但我想知道我是否首先遗漏了有关服务容器的一些重要内容。

【问题讨论】:

  • 你可能误用了服务容器,为什么不能只添加一个助手来从会话中检索部门?

标签: php laravel laravel-service-container


【解决方案1】:

您可以使用optional 助手:

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

现在,当您调用绑定类时,当它为 null 时您尝试访问的任何属性也将返回 null。

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 2017-04-03
    • 2015-01-26
    • 1970-01-01
    • 2015-10-19
    相关资源
    最近更新 更多