using version control
SVN is very common, but mercurial is more handsome, powerful and has solid gui support.
test driven development
well, if you do unit testing you're already on the winning side. for tools, it's a matter of choice. testing has to be as easy as possible, thats the reason why i ditched PHPUnit for SimpleTest.
debugging code
with unit tests you will hardly need xdebug. i use xdebug usually for profiling only. (check out KCachegrind btw)
use of UML diagrams
the biggest problem with everything that reflects code logic is that it is a lot of manual work to keep in sync. you can automate some tasks, but it's not that useful, because you usually wanna use uml before you have anything. the other problem is that diagram tools are much harder to use than pen and paper or a whiteboard. use uml if you have to communicate a problem with multiple developers or if you need an abstraction for yourself. ("dia" is a nice free tool. also mind mapping tools are very handy for brainstorming, some can actually compete with pen and paper.)
use of OOP for maintainable, reusable code
well, oop works out to some degree. :)
one good advice: composition > inheritance. inheritance is an powerful tool to reuse on the first sight, but maintenance and loose coupling will suffer for it. second good advice: maintenance > reuse. an abstract system can be very powerful, but also hard to maintain.
use of frameworks (like Zend Framework for php) for rapid application development
RAD is a good thing to get your app out early. but some components - especially ORM - will shoot your feet, at least if it comes to scalability. the major problem here is that you tie your domain logic to work with objects, which becomes very hard to factor out if you need a pure scalable database optimized solution. be aware of that and encourage your developers to utilize the database without high level abstraction layers. database abstraction is a myth, orm is a lie.
KISS
newcomers usually wanna apply all those best practices around, set up coding standards, use all the nice tool chains, whatever. it works out for some developers, but some will run into an mental blockade if things a too strict. unit testing and scm is really a must have, but someone new to unit testing really needs to learn it's value before he loves it. don't overdo, apply practices step by step and see how it works out.
KISS also boils down to code. sometimes the best way to solve a hard problem, is to solve it wrong. you need a six degrees of separation algorithm? just choose some friends at random. you can create a complete application around it, with wrong logic. if the customer eventually decides to to ditch it, everyone saved a lot of money.
agile
learn about agile methodologies, extreme programming, scrum, etc. there are many books out there. any book will make your team better, but it's the best to get every teammate into it.