Enterprise Architect from Sparx Systems can forward- and reverse-engineer PHP, although I haven't used this myself.
As to diagramming, my answer is yes - and no.
I would not (do not) use UML to reverse-engineer code bases. Reverse-engineering tools tend to give you only the easy bits (static structures), and even when they do try to provide you with dynamic aspects these are usually incomplete.
But more to the point, I think a UML representation of the source is pointless. Source code is far easier to read; any decent editor will provide syntax highlighting and block folding, and don't forget the significance of the non-source language files (eg Makefiles, IDE project definitions, etc), which UML reverse-engineerers most likely won't understand.
I use UML to document design, especially runtime and deployment aspects: what programs are built and how do they interact? Which ports does the server open? What threading model is used? How is each program configured? And so on. But I only very rarely refer to any source entities in any models.