Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Silverstripe在注入器中查找该类,以便依赖项注入可以覆盖该类_Php_Silverstripe - Fatal编程技术网

Php Silverstripe在注入器中查找该类,以便依赖项注入可以覆盖该类

Php Silverstripe在注入器中查找该类,以便依赖项注入可以覆盖该类,php,silverstripe,Php,Silverstripe,根据Silverstripe文档: 使用create()方法可以提供可链接性,这可以为代码增加优雅和简洁,例如Player::create()->write()。但是,更重要的是,它将在注入器中查找该类,以便依赖项注入可以覆盖该类 有人能解释一下“它将在注入器中查找类,以便该类可以被依赖项注入覆盖”部分吗?我想您可能指的是: Injector: MyClass1: class: MyClass2 当调用MyClass1::create()时,上面的YML配置片段将告诉Injecto

根据Silverstripe文档:

使用create()方法可以提供可链接性,这可以为代码增加优雅和简洁,例如Player::create()->write()。但是,更重要的是,它将在注入器中查找该类,以便依赖项注入可以覆盖该类


有人能解释一下“它将在注入器中查找类,以便该类可以被依赖项注入覆盖”部分吗?

我想您可能指的是:

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()