A
Кроме ко/контрвариантности есть же еще и инвариантность.
Size: a a a
A
SP
АГ
interface SomeAbstractProcessor {
public function process(SomeProcessable $toProcess): ProcessResult;
}
class SomeConcreteProcessor implements SomeAbstractProcessor {..}
class Foo implements SomeProcessable {..}
$p = new SomeConcreteProcessor;
$p->process(new Foo())->someResultMethod();
АГ
АГ
АГ
A
АГ
A
A
АГ
АГ
A
АГ
АГ
АГ
АГ
A
A
АГ