I’m a huge proponent of using frameworks when developing sites. The biggest advantage of using a frameworks is that code is generally developed in an organized and structured way. It makes bad developers conform to one uniform developing method instead of coming up with some crazy cockamamie structure (and let me tell you, i’ve seen some crazy ass stuff). Of course you shouldn’t be hiring bad developers, but that’s another blog post in itself!
When picking a framework, I would recommend using a framework that is documented to death. By picking up the framework documentation, another developer can figure out where the code is and instantly get started on working on the code because all the code is placed into specific agreed-upon areas.
In addition to good documentation, the framework should be highly object oriented. While some of the .NET guys reading this think ‘wtf are you talking about… everything is OO’, not all PHP frameworks that i’ve seen are OO. Object oriented frameworks are beautiful. They allow multiple developers to work on the same object without stepping on each other’s feet (using svn, of course). Without a nicely patterned OO framework, the code becomes an unmanageable spaghetti mess!
I would also urge you to use an open source framework. In my experience, a popular open source framework has been poked at by thousands of developers and has stood the test of time. While this may not be the case all the time, it generally is. The benefit is having a support community that can help you answer questions on how to do things. Also, there may be some community developed plugin that you can use instead of building something from scratch.
An argument that i’ve encountered in the past is ‘frameworks are slow’. While they do add overhead, I find that time-to-market is much more important to a business than is scalability at day zero. All frameworks can be tweaked for performance increases. In the end, if on framework can serve 10 more pages than another, it doesn’t really matter that much. Cloud computing is so easy to do nowadays, it’s trivial to launch another instance of your web server.
This isn’t to say your code shouldn’t be optimized. You framework should be customizable enough to allow different database configurations (read/write or sharding) as well as customizable enough to output static html if need be for lighthttpd setups for front end servers.
Some PHP frameworks that i’ve used and that I’m a huge fan of are: Symfony, CodeIgnitor, CakePHP (in this order).
Again, feel free if you want to argue/dispute this in the comments, or if you have some questions feel free to email me.