static указывает на класс, в котором вызвана функция. В данном случае parent::foo(); и self::foo(); указывают на одну и ту же функцию, которая вызывает метод текущего класса через static.
js и писать какие-нибудь браузерные игры на канвасе не пробовали? Все инструменты есть в браузере, результат виден сразу, js достаточно просто для вхождения.