当前位置: 首页 > 知识库问答 >
问题:

为什么在Laravel5.1中将::类附加到PHP类中

凌鹏程
2023-03-14

在Laravel 5.0中,这样的代码用于名称调整/加载类:

  'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
         'Illuminate\Foundation\Providers\ArtisanServiceProvider',
         'Illuminate\Auth\AuthServiceProvider',
         'Illuminate\Broadcasting\BroadcastServiceProvider',
         'Illuminate\Bus\BusServiceProvider',
]

然而,我在Laravel 5.1中看到了这一点

'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
         Illuminate\Foundation\Providers\ArtisanServiceProvider::class,
         Illuminate\Auth\AuthServiceProvider::class,
         Illuminate\Broadcasting\BroadcastServiceProvider::class,
         Illuminate\Bus\BusServiceProvider::class,
]

我的问题是:与此相比,此照亮\Bus\BusServiceProvider::class有什么好处,我应该在何时将::class附加到类名?

有任何地方我可以找到这个PHP留档?

共有1个答案

陶宜民
2023-03-14

关于::类的PHP文档

功能已在5.5版中引入,现在Laravel 5.1需要该功能

神奇的::class属性持有类的FQN(完全限定的名称)。

它的优点主要来自一个好的IDE。其中包括:

  • 更少的打字错误
  • 更容易的重构
  • 自动完成
  • 单击类以跳转到该文件

有时还可以导入类,而不是在代码中输入全名。这会使代码更干净,所有依赖项都在类的顶部声明为use。(我之所以这样说,有时是因为对于一个人来说,在一个像app.php这样的配置文件中导入所有类是没有意义的)

 类似资料:
  • 我正在构建一个Angular4项目,并使用IntelliJ。每当我创建一个新类,然后添加getter和setter时。IDE向字段添加下划线。 由于typescript语法似乎可以被IDE自动识别,但却以这种方式创建字段,因此我认为这是一种最佳实践,但我也读到过这样做是不应该的。 IDE为什么要这样做?我应该允许它为一个有角度的项目这样做吗?谢谢你的帮助! 在创建getter和setter之前 在

  • 问题内容: 为什么不能在Java中将类声明为静态类? 问题答案: 只有嵌套的类可以是静态的。这样,你可以使用嵌套类而无需外部类的实例。

  • 问题内容: 我从一本书中了解PHP类时遇到严重问题。他们似乎很难。它们的目的是什么?它们如何工作? 问题答案: 简而言之 ,类是对象的蓝图。对象封装了应用程序中某些内容在概念上相关的状态和责任,并且通常提供与之交互的编程接口。这促进了代码重用并提高了可维护性。 想象一个锁: 忽略,而现在的声明。 Lock类是应用程序中所有Lock的蓝图。锁可以被 锁定 或 解锁 ,由 属性 表示。由于它只能具有这

  • 在我开始之前,我想提一下,我正在使用GKE的免费试用版。我有一个在GKE集群中运行的简单服务器。我有一个用于公开服务器的服务。我正在尝试配置入口控制器并将其连接到此服务。 如果我的服务是LoadBalancer、NodePort类型,那么一切都会完美工作。但是,如果我的服务是ClusterIP类型,则会出现以下错误 然后,GKE停止尝试为入口配置IP。为什么我不能配置集群IP类型的服务,是否有解决

  • 问题内容: 当我得知该类在Java中被声明为final时,我想知道为什么会这样。那时我没有找到任何答案,但是这篇文章:如何在Java中创建String类的副本?让我想起了我的疑问。 当然,String提供了我所需要的所有功能,而且我从未想过需要扩展String类的任何操作,但是您仍然永远不会知道有人可能需要什么! 那么,有谁知道设计师决定将其定稿时的意图是什么? 问题答案: 将字符串实现为不可变对

  • 展示了如何调试问题,即PHP模块没有加载到PHP中。 我使用OpenSUSEV42。2个Linux操作系统,带有Apache Web服务器,PHP v7。1、Mysql。 因为它不提供PHPV7。1我需要,我构建了PHPV7。1来源。使用PHP-FPM。 我把它安装到 php.ini在: 我发现,opcache安装到 我编辑了php。ini并添加了以下行: 重新启动: 但我还是得到了以下结果: [