in reply to The division of (class) labor in OOP

hmm... in principle i tend to Tanktalus' point of view. it's always advisable designing classes in a way by which every class fulfills only its own purposes. but unless you are dealing with, let's say, millions of users and dozens of log files on a cluster of several computers - you'll be possibly better off with a mixed approach.
in the applications i wrote so far i made quite good experiences with a session class, and a user class. every session object contains as one of its members an instance of user - which is either assigned to a valid user, or to an anonymous one (if she's not logged in).
the implementation of that anonymous user helps a lot in writing your scripts:
return FORBIDDEN if $session->user->anonymous;


language is a virus from outer space.