<?php
class B {
public function f() {
$this->g();
$this->h();
$this->i();
}
public function g() {
echo 'B::g' . "\n";
}
protected function h() {
echo 'B::h' . "\n";
}
private function i() {
echo 'B::i' . "\n";
}
}
class D extends B {
public function g() {
echo 'D::g' . "\n";
}
public function h() {
echo 'D::h' . "\n";
}
public function i() {
echo 'D::i' . "\n";
}
}
$d = new D();
$d->f();
PD9waHAKCmNsYXNzIEIgewoJcHVibGljIGZ1bmN0aW9uIGYoKSB7CgkJJHRoaXMtPmcoKTsKCQkkdGhpcy0+aCgpOwoJCSR0aGlzLT5pKCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGcoKSB7CgkJZWNobyAnQjo6ZycgLiAiXG4iOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBoKCkgewoJCWVjaG8gJ0I6OmgnIC4gIlxuIjsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGkoKSB7CgkJZWNobyAnQjo6aScgLiAiXG4iOwoJfQp9CgpjbGFzcyBEIGV4dGVuZHMgQiB7CglwdWJsaWMgZnVuY3Rpb24gZygpIHsKCQllY2hvICdEOjpnJyAuICJcbiI7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGgoKSB7CgkJZWNobyAnRDo6aCcgLiAiXG4iOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpKCkgewoJCWVjaG8gJ0Q6OmknIC4gIlxuIjsKCX0KfQoKJGQgPSBuZXcgRCgpOwokZC0+ZigpOwo=