Добавлю свои пять копеек. Мне в своё время очень помогла идея интерфейсов, хотя они и довольно умеренно прижились в php и в основном на низком уровне. В вашем примере вы могли бы вынести обработку комментариев в отдельный метод, который требовал бы от объекта-аргумента имплементить интерфейс, требующий наличия метода getComments. Дальше этот метод уже сам строит по комментариям дерево. Потом вы упаковываете этот метод в файл и когда вам нужно дерево комментариев к любой сущности (не только блогу, а к фотогалерее, новости и т.п.) дёргаете этот волшебный метод. При условии что вы соблюдаете некие свои собственные соглашения о формате комментариев всё будет работать само собой. А если вы подсунете сущность, которая не имеет метода getComments, то сразу узнаете об этом.
Конкретный пример конечно высосан из пальца, но в системах с количеством сущностей более трёх интерфейсы здорово помогают. Вы можете ещё на этапе проектирования заложить требования к входящим данным для реализации каждого конкретного куска логики. А бонусом получите то, что этот кусок логики будет в дальнейшем корректно работать с любыми данными, которые удовлетворяют требованиям.