Я хотел бы определить тип возвращаемого значения метода интерфейса ImpleInterface (), возвращающий сам интерфейс (AI) (например, свободный установщик), наследующий класс вендора, который реализует запрошенный интерфейс и уже имеет возвращаемый тип - нокажется невозможным в следующей ситуации.Может быть, это невозможно, а когда нет, каким может быть правильное решение?
Этот пример работает:
<?php
declare(strict_types=1);
/**
* This interface is defined by the user
*/
interface AI
{
public function implementedInterface();
}
/**
* This class is immutable because it is vendor
*/
abstract class A
{
public function implementedInterface(): self
{
return $this;
}
}
/**
* This class is defined by the user
*/
class B extends A implements AI
{
}
Это подход, который я хотел бы использовать, но в результате:PHP Fatal error: Declaration of A::implementedInterface() must be compatible with AI::implementedInterface(): AI
<?php
declare(strict_types=1);
/**
* This interface is defined by the user
*/
interface AI
{
public function implementedInterface(): AI;
}
/**
* This class is immutable because it is vendor
*/
abstract class A
{
public function implementedInterface(): self
{
return $this;
}
}
/**
* This class is defined by the user
*/
class B extends A implements AI
{
}