Аргумент метода интерфейса без типа — запах кода?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Аргумент метода интерфейса без типа — запах кода?

Сообщение Anonymous »

Я подумываю о создании метода интерфейса с аргументом, который может иметь смешанный тип и действовать как метаданные. Я не знаю заранее тип метаданных, но знаю, что какой-то его тип (или что-то вроде контекста) может потребоваться для реализации внешнего системного адаптера.
Пример на PHP:< /p>

Код: Выделить всё

interface AdapterInterface
{
public function someMethod(SomeEntity $entity, mixed $metadata = null): void;
}

class ExternalSystemAdapter implements AdapterInterface
{
public function someMethod(SomeEntity $entity, mixed $metadata = null): void
{
if (! $metadata instanceof MetadataThatAdapterIsAwareOf) {
throw new Exception('Invalid metadata');
}

// do stuff
}
}

class Service
{
public function __construct(private readonly AdapterInterface $adapter)
{
}

public function doSomethingWithEntity(SomeEntity $entity, mixed $metadata)
{
return $this->adapter->someMethod($entity, $metadata);
}
}

$service = new Service(new ExternalSystemAdapter());
$service->doSomethingWithEntity(new SomeEntity(), new SomeMeta());
Это запах кода? Можно ли как-то этого избежать?


Подробнее здесь: https://stackoverflow.com/questions/792 ... code-smell
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»