{ echo 1; self::f(); } } class Class2 extends Class1 { protected static function f() { echo 'B'; } public static function StaticFun() { echo 2; self::f(); parent::f(); } } if (true) { class Class3 extends Class2 { public static function f() { echo 'C'; } } } Class1::StaticFun(); Class2::StaticFun(); Class3::StaticFun(); Class3::f();
# code... } function ToString() { return ClassName::class; } function GetProp() { return $this->prop; } } class Class2 extends ClassName { function get_lol() { echo parent::GetProp(); } function get_copy() { return new static(); } } ################################################################################ namespace N1; $obj = new Class2(); $obj->get_lol(); // prop echo "</BR>"; var_dump(Class2::get_copy()); // object(N1\Class2)#2 (1) { ["prop":protected]=> string(4) "prop" }