gpt4 book ai didi

PHP OOP 接口(interface)类型继承

转载 作者:行者123 更新时间:2023-12-04 05:08:24 25 4
gpt4 key购买 nike

像这样的代码:

interface entite
{

}

class Foo implements entite
{

}


$foo = new foo;
if( $foo instanceof entite ) echo "he is";

显示“他是”。 Foo 从接口(interface)继承类型“entite”
但是当尝试:
class FooDeleter implements deleter
{
public function __construct(Foo $Foo)
{

}
}

interface deleter
{
public function __construct(entite $entite);
}

给我 :

Fatal error: Declaration of FooDeleter::__construct() must be compatible with deleter::__construct(entite $entite)



为什么 ?如何 ? =(

编辑:独特的方式实际上是像这样定义类型化的删除器:
class FooDeleter implements deleter
{
public function __construct(entite $Foo)
{
if( $Foo instanceof Foo ) { ... }
}
}

最佳答案

通过声明您的 FooDeleter具有比接口(interface)更严格的类型提示的构造函数,则违反了接口(interface)。

如果您将构造函数更改为

public function __construct(entite $Foo)

...那么您仍然可以传入 Foo对象,并且接口(interface)将被正确实现。

关于PHP OOP 接口(interface)类型继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15214462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com