I just came across this article it is one of what seems like an endless series of articles on OOP programming (theory).
The article Thinking in Objects explains in a lot more detail than most books and articles the thinking behind creating classes. It covers subjects I've struggled with while learning OOP for PHP5, so I hope it helps others 🙂