I like to have a folder structure that mirrors the class hierarchy, sort of like is suggested in the PEAR coding standards (but not quite exactly like that, since I kind of feel like it's overkill for a non-PEAR project). Since I don't usually have too many levels of inheritance, it works sort of like this (folders in square brackets, files otherwise):
One thing, however, doesn't seem to fit very well into this system: interfaces! Since a class can implement more than one interface, it's not really possible to store classes in folders based on their interfaces alone. So where do the interface files go?
So far my answer has always been to put them in a separate folder independent of the [classes] folder. I.e.,
--(see above for structure)
This seems kind of messy to me, but I haven't had any better ideas yet. Any suggestions?