actually i don't see any reason to use classes. you can do ABSOLUTELY the same with plain functions. if you want it to be more organized, you can group them into separate files and then include() them depending on the situation... please correct me if i'm wrong... i've googled a lot but i haven't found anything useful about that...
I used to think very much the same way I would go absolutely function happy and had functions that would do everything but later after those function includes grew so large, I actually found myself forgetting about functions that I've already written.
when I began to think of classes as being objects, or in specific, having a specific "task" to do, it logically groups the variables and functions together and makes their purpose more obvious by the Association within the task. Also, when you have the inclusion of many functions, it makes it difficult in troubleshooting when someone picks up your code and tries to analyze it. If an error occurs within a class, I find it easier to go to....but most importantly, I think the readability of the code is improved.
As was mentioned before, this all applies mostly to modular code...for example, I have a single database access class I use for all my database actions....most apps will access a database, so the modularity is a great asset. If I was building a small app, I probably wouldn't bother with a class, unless there was written already