Php Silverstripe在注入器中查找该类,以便依赖项注入可以覆盖该类
根据Silverstripe文档: 使用create()方法可以提供可链接性,这可以为代码增加优雅和简洁,例如Player::create()->write()。但是,更重要的是,它将在注入器中查找该类,以便依赖项注入可以覆盖该类Php Silverstripe在注入器中查找该类,以便依赖项注入可以覆盖该类,php,silverstripe,Php,Silverstripe,根据Silverstripe文档: 使用create()方法可以提供可链接性,这可以为代码增加优雅和简洁,例如Player::create()->write()。但是,更重要的是,它将在注入器中查找该类,以便依赖项注入可以覆盖该类 有人能解释一下“它将在注入器中查找类,以便该类可以被依赖项注入覆盖”部分吗?我想您可能指的是: Injector: MyClass1: class: MyClass2 当调用MyClass1::create()时,上面的YML配置片段将告诉Injecto
有人能解释一下“它将在注入器中查找类,以便该类可以被依赖项注入覆盖”部分吗?我想您可能指的是:
Injector:
MyClass1:
class: MyClass2
当调用
MyClass1::create()
时,上面的YML配置片段将告诉Injector(几乎所有SS对象都通过它实例化)使用MyClass2
而不是MyClass1
。我想您可能指的是:
Injector:
MyClass1:
class: MyClass2
当调用
MyClass1::create()
时,上面的YML配置片段将告诉Injector(几乎所有SS对象都通过它实例化)使用MyClass2
而不是MyClass1
。当您的玩家类依赖于另一个类时,最好将另一个类的实例传递给玩家。您可以在此处阅读更多关于此的信息:
SilverStripe有一个用于依赖注入的内置解决方案:Injector类。看
因此,当您调用Player::create()
SilverStripe将查找要使用的正确类(默认为Player类,但可以用配置文件覆盖),创建它的新实例,注入它的依赖项并将其返回给您
如果您是SilverStripe新手,您可能可以忽略所有这些。当您的玩家类依赖于另一个类时,最好将另一个类的实例传递给玩家。您可以在此处阅读更多关于此的信息: SilverStripe有一个用于依赖注入的内置解决方案:Injector类。看 因此,当您调用
Player::create()
SilverStripe将查找要使用的正确类(默认为Player类,但可以用配置文件覆盖),创建它的新实例,注入它的依赖项并将其返回给您
如果您是SilverStripe新手,您可能会忽略所有这些。这是否适用于通过
MyClass1::create()
实例化的所有类,但不适用于通过new MyClass1
创建的类,因为大部分框架代码仍然适用于这些类?正确newmyclass()
是普通的旧PHP。很难“劫持”这种语法,因此SS提出了Injector的
create()
方法。仅供参考,还有很多人错过的createWithArgs()
。这是否适用于通过MyClass1::create()
实例化的所有类,但不适用于通过new MyClass1
创建的类,因为大部分框架代码仍然如此?正确newmyclass()
是普通的旧PHP。很难“劫持”这种语法,因此SS提出了Injector的
create()
方法。仅供参考,还有很多人错过的createWithArgs()
。