Из того, что я понимаю здесь, вы можете использовать составной шаблон
http://en.wikipedia.org/wiki/Composite_pattern
Ваш индекс контроллера имеет доступ только к объекту, который реализует интерфейс IPageBuilder (или аналогичное имя) с некоторыми стандартными функциями, такими как «generatePage». Этот объект на самом деле будет своего рода контейнером, который содержит другой объект типа IPageBuilder. Эти листовые объекты могли бы создать некоторый подраздел страницы, такой как голова, тело и нога. Каждый из этих конечных объектов будет другого класса, но они будут реализовывать интерфейс IPageBuilder. Когда ваш индексный объект вызывает «generatePage», контейнер будет вызывать по порядку метод «generatePage» каждого из своих конечных объектов, который, в свою очередь, позаботится о рендеринге HTML.
Используя этот подход, если ваш класс Body становится слишком большим, вы всегда можете превратить его в контейнер, который реализует интерфейс IPageBuilder, например, запись в блоге Body может состоять из объекта Article и объекта CommentList. В этом случае объект body будет только распространять метод «generatePage» на свой дочерний объект.
Для создания объекта IPageBuilder вы можете использовать фабричные шаблоны
http://en.wikipedia.org/wiki/Factory_method_pattern
Честно говоря, в прошлом я пытался использовать подобный подход для генерации своего HTML-кода и нашел, что он является излишним. Мое предложение было бы вместо этого использовать шаблонизатор, как Smarty. Ваш дизайнер будет любить тебя (или ненавидеть меньше), если сделаешь это ^^.
http://www.smarty.net/
Если вы хотите знать, как использовать интерфейсы в PHP, не то чтобы это было очень сложно ...
http://ca.php.net/manual/en/language.oop5.interfaces.php