【问题标题】:Why do we use \ instead of the namespace?为什么我们使用 \ 而不是命名空间?
【发布时间】:2018-10-21 12:39:38
【问题描述】:

我是 Laravel 的新手,我已经看到当我们根据需要使用 Query Builder 而不是 Eloquent 时,我们必须添加命名空间,即 use Illuminate\Support\Facades\DB; 或 use DB;(正如别名中提到的那样)以便使用它,有些人在编写查询时只需使用\DB。

例如。 \DB->table('tasks')->where('id', 3)->get();

\ 在命名空间约定中表示什么或在此处表示什么。在寻找有人告诉我的答案时,\ 的意思是 Global Namespace,但如果这是真的,那么它在这种情况下的实际含义是什么?我使用\ 代替App\Model_Name,但出现错误。如果\ 表示全局命名空间,为什么会这样?

【问题讨论】:

  • 我相信 app.php 中的 aliases 数组欺骗了根(全局)命名空间。这就是为什么你可以在它前面写一个反斜杠。
  • @ThomasMoors 我知道我们可以编写一个别名,而不是编写整个命名空间,但是 `` 将别名带到根目录,从来不知道。你确定吗?
  • 我不确定
  • @ThomasMoors 无论如何,谢谢,也许我现在可以在该行搜索更多内容。

标签: laravel namespaces


【解决方案1】:

PHP 有一个技巧来引用位于全局命名空间中的类,我们只需在它们前面加上一个向后的 (\) 斜杠。

通过前面的 (\) 斜杠,PHP 知道我们指的是全局命名空间中的 Class,并实例化那个。

当某些类具有相同的类名称时,您在使用(\) 时会出错。

示例:

Request 类有许多命名空间 Illuminate\Support\Facades\Request 和 Illuminate\Http\Request,当您尝试使用 Request 类 Illuminate\Http\Request 类,而您定义了 \Request 而不是使用命名空间,则会发生冲突,您将收到找不到类的错误。

这是我的信念。希望这些东西能帮助你了解一点。

【讨论】:

  • 当您说`位于全局命名空间内的类`时,请您准确告诉我这些类的位置吗?
猜你喜欢
  • 1970-01-01
  • 2015-11-19
  • 2023-04-04
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多