【问题标题】:In Laravel what is the difference between use User; and /User在 Laravel 中使用 User 有什么区别?和/用户
【发布时间】:2018-05-18 07:29:46
【问题描述】:

我想知道两者的区别

使用用户;

/用户

在 laravel 中。

在我的项目中,我看到一个控制器说 UserController 它这样做 它增加了

使用用户;

在控制器的顶部和它使用的功能

用户::find($id);

获取查询结果。

还有一些其他 Controller 说 CompanyController 它不使用

使用用户;

但它是这样做的

/用户::find($id);

并得到相同的结果。

我对它的用法感到困惑。我应该遵循哪个,每种类型的作用是什么,谁能解释一下。

【问题讨论】:

标签: php laravel class


【解决方案1】:

您应该将use User;User::find($id); 结合使用

当你在它前面有斜线时,你基本上将上面的 2 合二为一。

深入:

User 类(根据您的示例)似乎没有命名空间,但您使用它的文件有一个。

换句话说,User 类是在根命名空间中定义的。

通常,您可以使用根命名空间中的类而不使用 use/,但当您使用它的文件具有命名空间时则不能。

因此,您必须使用use User;/User:: 指定您尝试使用的对象的命名空间

虽然两者的行为相同,但大多数开发人员选择使用 use 变体。

【讨论】:

  • 好的,所以当我使用用户时;它是否像预加载到控制器中一样。并且可以被该控制器内的任何函数访问?
  • @ScrappyCocco 不,它不是“预加载”的,它只是“告诉”文件 if 它需要 User 类,它应该在哪里找到它
  • @ScrappyCocco 将其视为Table of contents,一旦您查找某个章节,您就会知道在哪里找到它,没有它您将不知道在哪里找到它
【解决方案2】:

两者具有相同的行为,但使用方式不同。

Use User;
User::all();

基本上是对该模型类的引用,可以在任何类中使用它来获取其静态方法。

/user::all();

不需要调用引用,直接访问模型所以两者基本相同。

在您的情况下,您正在引用该模型类

use User;
User::find(2);

它会调用模型来寻找匹配的用户;

在公司控制器中您没有使用任何对模型的引用。您仅通过“/”访问该模型。 laravel 提供这个只是为了方便。

【讨论】:

    猜你喜欢
    • 2021-07-11
    • 2019-05-06
    • 2021-01-06
    • 2022-01-27
    • 2012-06-15
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多