Ну require и dofile это не совсем как include ну да ладно я понимал что нету
Во-первых, использование инклюдов как "вставку кода куда попало" — признак чего-то кривого, там довольно много соглашений на тему "что и как вставлять", чтобы код не превратился в говнокод.
Во-вторых, dofile делает ровно то что написано: в момент выполнения, считывает файл (как функцию) и исполняет его содержимое в точке вызова. Делает это каждый раз, соответственно файл скрипта можно изменять, кеширования не будет, но будет чтение с диска, что замедлит процесс исполнения.
В третьих, сишка имеет одну очень прикольную штуку, называется "препроцессор", который как раз и берёт, и склеивает все файлы в один, подставляет текст сишного кода в инклюды и всё такое прочее. Но ты можешь сделать препроцессор, который будет склеивать луёвые скриптики в точках инклюда по своей метке: код это просто текст, и с ним можно работать как с текстом, используй свои супер-силы регулярных выражений, и сделай с ним что угодно.