А ваш пример закон не нарушает.
В $user->getPosts()->getLast()->getComments(); каждый объект обращается только к одному знакомому ему объекту:
posts = user.getPosts();
lastPost = posts.getLast();
comments = lastPost.getComments();
Так что не переживайте, всё в порядке. Выше понаписали какой-то ереси, честно говоря.
Нарушением было бы что-то типа $user.posts.last->getComments();
Здесь получается что user знает о том, как устроен posts, а это не хорошо.
Вообще-то по вашей же ссылке на википедии это всё хорошо расписано, даже с примерами.