How much work is it reasonable for an object constructor to do? Should it simply initialize fields and not actually perform any operations on data, or is it okay to have it
I think when you create a class ($obj = new class), the class should not affect the page at all, and should be relatively low processing.
For instance:
If you have a user class, it should be checking for incoming login/logout parameters, along with cookies, and assigning them to class variables.
If you have a database class, it should make the connection to the database so it is ready when you are going to start a query.
If you have a class that deals with a particular form, it should go get the form values.
In a lot of my classes, I check for certain parameters to define an 'action', like add, edit or delete.
All of these things don't really affect the page, so it wouldn't matter too much if you created them or not. They are simply ready for when you are going to call that first method.