【问题标题】:What does double colon in laravel meanslaravel 中的双冒号是什么意思
【发布时间】:2016-08-29 04:08:54
【问题描述】:

例子:

Auth::guard($guard)->guest()

我不明白双冒号 (::) 符号在 laravel 框架中的含义。从http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php 我了解到它代表作用域解析运算符来访问类的静态、常量和重写属性或方法。但是从 laravel 我了解到 Auth 表示类外观的别名,所以我需要对上面的示例进行解释,尤其是 guard(parameter)->guest() 的意思。
我还是 php 新手,现在正在为我的后端学习 laravel 框架。

【问题讨论】:

  • 双冒号在 Laravel 中没有不同的含义。您正在访问 Auth 类的静态方法 guard 并向其传递参数。
  • 如果您正在学习 PHP,我建议您学习并清楚区分 PHP 本身和框架。如果您尝试通过学习框架来学习 PHP,那么像 Laravel 这样的框架会在幕后做很多事情,您会错过(并且像这样让您感到困惑)。
  • @CharlotteDunois 非常感谢先生的好回答,所以我正在从 auth 类访问静态 guard 方法。 guest() 方法呢?为什么可以从 guard() 方法先生访问它?再次感谢
  • 静态方法 guard 返回一个类实例,我不知道是哪个类,但是您可以通过阅读文档或转储 guard 的返回值轻松找到它(通过使用 @ 987654328@(Laravel 的辅助函数)。

标签: php laravel-5.2


【解决方案1】:

:: 范围解析运算符

:: 被称为scope resolution operator (AKA Paamayim Nekudotaim)。此运算符用于引用某些块或程序上下文(如类、对象、命名空间等)的范围。对于此引用,标识符与此运算符一起使用以访问或重现该范围内的代码。

Reference

Auth::guard($guard)->guest() :在这一行中,您正在使用静态类Authguard() 方法。要使用静态类的功能,我们使用:: 范围解析运算符。

【讨论】:

  • 也称为Paamayim Nekudotayim,是PHP解析器的首选(尤其是致命错误):P
  • 在 laravel 中,当我打开 Auth 类时,我只看到返回 auth 字符串的 getFacadeAccessor 方法。先生,guard() 和 guest() 方法如何链接到 Auth 类。
  • @Jsnow 现在一位先生在这里,我们都处于同一水平。检查这个:laravel.com/api/5.1/Illuminate/Auth/Guard.html
  • 谢谢你的先生。 @MayankPandey 的指南,我现在将学习它
【解决方案2】:

您可能会在访问类的静态方法或属性时遇到这种情况。

例如:

class Foo
{
    public static function bar()
    {
      return "bar";
    }
}

Foo::bar // access the bar method without instantiating the Foo class.

【讨论】:

    【解决方案3】:

    基本上它被称为

    Scope resolution operator (::)
    

    只是令牌,它允许访问类方法的静态、常量和重写属性

    示例-在 laravel 中我们这样称呼模型

    User::select('name')->get()->toArray();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 2013-05-18
      • 1970-01-01
      • 2011-01-17
      • 2016-12-23
      • 2012-10-09
      相关资源
      最近更新 更多