MK
Size: a a a
MK
Бп
А
abstract class A {}
abstract class B {}
final class C extends A, B {}
function acceptB(B $b): void
{
}
function acceptA(A $a): void
{
}
acceptB(new C());
acceptA(new C());
MK
A
A
А
ДК
А
В🚙
А
interface A {}
interface B {}
interface C extends A, B {}
final class E implements C {}
final class D implements A, B {}
function acceptA(A $a): void {}
acceptC(new E());
acceptC(new D());
В🚙
ДК
А
D
реализует несколько типов и может быть применен там, где ждут A
, и там, где ждут B
.y
ДК
ДК
А
trait AuthorizesRequests
{
public function authorizeResource(...)
{
$this->middleware($middlewareName, $options)->only($methods);
}
}
middleware()
?A
ДК