小ネタですが、PHPでスタティックなメソッドを呼び出す時の話です。 PHPでは、「self::method();」という形式でstaticなメソッドを呼び出すことができます。これは文字通り、「self」すなわち自分のスタティックメソッドを呼び出すわけです。
class MyClass {
static function name() {
return 'Pichu';
}
function getName() {
return self::name();
}
}
class MySubClass extends MyClass {
static function name() {
return 'Pikachu';
}
}
$myObject = new MySubClass();
echo $myObject->getName();
//結果は「Pichu」となる
class MyClass {
static function name() {
return 'Pichu';
}
function getName() {
// return self::name();
eval('$name='.get_class($this).'::name();');
return $name;
}
}