Silverstripe 4 - 访问核心方法

Aar*_*ryn 2 php silverstripe silverstripe-4

在Silverstripe 3中,eveything按需自动加载.这意味着人们可以知道他们想要使用的类和方法.例:

Debug::dump('dump message');
Run Code Online (Sandbox Code Playgroud)

如果我正确理解SS4的概念,则需要将类导入到您要使用方法(或属性)的文件中.在上面的示例中,需要在文件顶部执行以下操作

use /name/space/to/Debug
Debug::dump('dump message');
Run Code Online (Sandbox Code Playgroud)

这种理解是否正确?如果是这样,我真正的问题是开发人员如何有效地知道核心中所有内容的准确位置?他们是否希望知道这些核心文件在系统中的确切位置,以及您希望使用的名称和方法?有没有工具或方法可以帮助解决这个问题?

Unc*_*ese 7

首先,只是一个澄清 - 你所谈论的不是自动加载,它更像是别名 - 但两者是相关的.

由于Debug该类不再位于全局命名空间中,因此其名称更加冗长(SilverStripe\Dev\Debug).这称为完全限定的类名,或简称为"FQCN".然而,关于这个新名称并不缺乏.打字很繁琐,如果班级改名,你就有很多更新.

为此,您可以使用该use语句将该类"导入"到别名下的文件的本地范围.默认情况下,该别名只是FQCN(Debug)的尾随部分,但您也可以使用您喜欢的任何自定义别名.(use SilverStripe\Dev\Debug as MyDebugger).

SS4现在使用PSR-4自动加载,其中命名空间是一个关键部分.在很短的时间内,它规定目录结构必须与FQCN匹配,例如/framework/src/Dev/Debug.php.这使得自动加载具有确定性和可预测性.

至于工具,使用像PHPStorm这样的全功能IDE 对于在具有命名空间类的框架中进行开发工作是非常宝贵的(这些规则远远超过了例外情况).一个好的IDE,比如PHPStorm,不仅可以在注入类名时自动完成,还可use以为您添加语句,以及许多其他许多精彩的节省时间的功能.

对于更加手动的方法,api.silverstripe.org是查找类映射的好地方.

  • 感谢您的详细解释.这一切都有道理.不得不与PHPStorm争夺一点,因为它没有在/ vendor中找到任何东西.但事实证明,这是你可以放在某些目录上的排除标记. (3认同)