Сергей Протько: разница видна и не только под капотом. Даже на поверхности видно, что интерфейс - это "просто" средство доказать, что данный класс отвечает этой сингатуре. Абстрактный класс - это класс с виртуальными функциями без реализации по-умолчанию. Т.е. абстрактная функция будет с виртуальным доступом, а функция из интерфейса - как обычная
Сергей Протько: ну, можно и так. Вообще, правильнее говорит "класс обещает обеспечить реализацию всех методов из неограничего количества интерфейсов". Прикол в том, что если мне не изменяет память, определить реализацию нужно всех методов в случае с интерфейсом, а в случае с абстрактым классом - необязательно.
Михаил: вообще, задача крайне, говорю, крайне странна. Для бэкапов это слишком жирно, для каких-то простых документиков тоже. Мне даже не приходит в голову, для чего столь странные условия нужны.
Михаил: а зачем такая версионность нужна? :) Если у вас 50 файлов разных типов по всему диску, от такой версионности толку нет. А для гит, кстати, под Винду GUI есть.
sim3x: примеров чего? Чатов? Их изготовления на сайте Socket.io есть. Простейшейго сайта? Прочитайте про Express. Дерганья с DB? Тут я не знаю, не приходилось с DB рабоотать. А вообще, есть Horizont.io
sim3x: она словно специально для этого сделана. Бьет PHP по производительности. Это во-первых.
А во-вторых, можно простой чат на ней по туториалу на сайте Socket.io сделать. < 25 строк и чистый код.
В-третьих, npm легко доставит вам все это за 5 минут.