<?php
class A {
public function __call($method, $args) {
echo "A->$method\n";
}
public static function __callStatic($method, $args) {
echo "A::$method\n";
}
}
class B extends A {
public function test1() {
A::test1(); // A->test1 because A is related to B and test1 is non-static
}
public static function test2() {
A::test2(); // A::test2 because A is related to B and test2 is static
}
}
class C {
public function test3() {
A::test3(); // A::test3 because A is not related to C
}
public static function test4() {
A::test4(); // A::test4 because A is not related to C
}
}
$b = new B();
$b->test1();
$b::test2();
$c = new C();
$c->test3();
$c::test4();