Я поступил по-другому. Еще на заре понадобилось создать сайт для своей семьи (еще до Контакта), стал подбирать себе довольно сложную, но одновременно простую в использовании CMS. Остановился на DataLife Engine (вроде до сих пор выпускается), из-за того, что для нее выпускалось просто огромное количество дополнительных модулей. И да, она была очень логична в плане юзабилити. Так как из себя самой она представляет только новостной модуль и подходит разве что для какого-то варезника 2000-х годов, пришлось устанавливать эти модули, постепенно превращая свой сайт во что-то действительно дельное. В установке этих модулей был один важный нюанс: это все делалось вручную путем правки ее исходного кода. Поэтому постепенно за несколько лет неспешной доработки моего сайта я перелопатил ее код вдоль и поперек и благодаря этому получил довольно неплохие знания в PHP. После этого я понял, что ее код не слишком-то и масштабируем и решил писать свою CMS c нуля по той логике, которая была заложена в DLE. Как оказалось в дальнейшем, ее код просто идеально подходил для создания клонов CMS на ее основе: это полноценный ООП, однако он не содержит зубодробильных паттернов с кучей уровней абстракции, о которые сломает ноги даже опытный разраб. И вместе с этим я внимательно изучал для чего нужна та или иная функция, которую я встречал в коде, пользуясь поиском по php.net, например:
php.net/manual/ru/function.str-replace.php. В итоге весь процесс занял порядка двух лет, но он был очень интересен тем, что содержал в себе не сухую, оторванную от жизни теорию, а 90% применимой в реальной жизни практике, поэтому оно было настолько эффективно и интересно. Очень рекомендую мой опыт для обучения)