emaks, зачем ты туда self:: натыкал? Делаешь то ты всё правильно, только self'ы лишние. Селф в ООП применяется, это вызов данных(переменных) или метода текущего класса. Зачем ты его используешь я так и не понял...
Короче селф убери кругом и всё будет работать.