3 abstract class BaseCls
{
4 public function base() {}
7 class HasFoo
extends BaseCls
{
8 public function foo0() {}
9 public function foo1() {}
12 class HasFooChild1
extends HasFoo
{}
14 class HasFooChild2
extends HasFoo
{}
16 class DoesNotHaveFoo
extends BaseCls
{
17 public function bar() {}
20 function fn(BaseCls
$x) {
26 fn(new HasFooChild1());
27 fn(new HasFooChild2());
28 fn(new DoesNotHaveFoo());