首页 > 解决方案 > 同一方法中具有不同返回类型的接口的 PHP 父接口

问题描述

让我们从一些幼稚的代码开始:

class SettingFactory
{
  public function create($val, $type): Setting
  {
      switch($type) {
          case 'bool':
              return new CanDoSmthSetting();
          case 'multipleChoice':
              return new SomeOtherTypeSetting();

      }
  }

}

interface Setting 
{
    public function get();
    public function set();
    public function serialize();
}

interface BoolSetting extends Setting
{
    public function get(): bool;
    public function set(bool $value): void;
}

interface MultipleChoiceSetting extends Setting
{
    public function get(): array;
    public function set(array $values): void;
}

class CanDoSmthSetting implements BoolSetting
{
    ...
}

class SomeOtherTypeSetting implements MultipleChoiceSetting
{
    ...
}

有一些工厂创建了一些设置。有预定义的设置类型列表,每种类型都有自己的行为和规则。我很想使用返回值和接口,但是我不知道怎么做。没有类型提示和返回类型的父接口的想法似乎是错误的。

怎样才能做得更好?

标签: phpinterfacereturn-typesolid-principles

解决方案


推荐阅读