class A implements ArrayAccess { static function read() { /*...*/ } static function readDefault() { /*...*/ self::read(); /*...*/ } } class Config() extends A { static function read() {/*...*/} } Config::readDefault() // this hits A::read(), but i want it to hit Config::read();