ну как, если нужно что-то крайне специфическое - можно и с нуля запилить.
но, как правило, всегда нужно пилить роутинг, работу с бд, админку, разграничение прав пользователей и прочую хрень, которая давно и хорошо реализована в фреймворках, бери да пользуй.
свой пхп код можно встроить всегда, но все-таки лучше использовать инструменты фреймворка.
фреймворк это просто конструктор, набор готовых деталей из которых ты собираешь что тебе нужно.
естественно, в нем придется разобраться.
на данный момент материалов в инете - тьма, бери и учи.
а самописное - оно всегда имеет тенденцию обрастать костылями и становиться все тяжелее в поддержке. ну, если ты не мега-архитектор. да и то только замедлит наступление неизбежного.
Олег Серебряков: не знаю, лично я программирую потому что мне очень нравится программировать.
просто не могу не программировать.
просто для себя, для удовольствия, эксперимента ради, или упростить какую-нить рутину.
а на работе еще и бабки за это платят.
1. добавить поле revision_id во все таблицы в которых хранятся пользовательские данные.
2. добавить таблицу user_revisions, в которой будет: user_id, revision_id, approved (плюс опционально timestamp создания ревизии, етц.).
3. изменить механизм загрузки данных юзера - в случае если просматривает сам юзер - грузить последнюю ревизию, если посетители - последнюю ревизию у которой approved = 1
4. изменить механизм сохранения данных при редактировании - каждый раз должна создаваться новая ревизия (запись в user_revisions), и с ее id добавляться записи в таблицы данных.
тут возможны варианты - дабы не плодить лишние ревизии, то вплоть до положительной модерации можно все изменения сохранять в одну ревизию.
5. ну и само собой запилить механизм модерации, при котором админ может просматривать ревизию, и менять ее approved на 1.
6. если задействована EAV модель, то возможно делать будет сложнее, но суть та же.