银条在注入器中查找类,以便可以通过依赖关系注入覆盖该类



根据 Silverstripe 文档:

使用 create()

方法提供了链式,这可以为您的代码增加优雅和简洁,例如 Player::create()->write()。然而,更重要的是,它将在注入器中查找类,以便可以通过依赖注入覆盖该类。

有人可以解释"它将在注入器中查找类,以便可以通过依赖注入覆盖该类"部分吗?

我想你可能指的是这个:

Injector:
  MyClass1:
    class: MyClass2

上面的 YML 配置片段将告诉 Injector(几乎所有 SS 对象都通过它实例化)在调用 MyClass1::create() 时使用 MyClass2 而不是 MyClass1

当您的玩家类依赖于 OtherClass 时,最好将 OtherClass 的实例传递给玩家。您可以在此处阅读有关此内容的更多信息:什么是依赖注入?

SilverStripe有一个内置的依赖注入解决方案:注入器类。请参阅 https://docs.silverstripe.org/en/3.3/developer_guides/extending/injector/

因此,当您调用Player::create(); SilverStripe 将查找要使用的正确类(默认为 Player Class,但可以用配置文件覆盖),创建它的新实例,注入其依赖项并将其返回给您。

如果你是SilverStripe的新手,你可能会忽略所有这些。

最新更新