Having said that, I would say that Symfony is the best hope for PHP. It is the framework that takes PHP furthest forward, and offers the best starting point of a strong ecosystem. Symfony imitates many of the best features of Rails.
I've worked on a lot of PHP projects. I've worked on WordPress and Drupal and CakePHP. I dislike nearly all software written in PHP. But Symfony is elegant and clean and the people behind it are serious and intelligent. If you have to work with PHP, then you should work with Symfony.
However, I do not expect the Symfony community to ever grow large, and I will quote something that I wrote on my blog a year ago to explain why:
"No matter what data source you consult, the conclusion is unmistakable: Symfony is a small community, and its rate of growth is slow. Why is this? My own theory is that Symfony brings to PHP something that PHP has long been missing: a truly professional, industrial strength, object oriented architecture that allows PHP to be taken seriously in the enterprise. However, all of the people who would be truly interested in such a framework have long ago found a home using Ruby, Java or Python. In short, the kinds of people who gravitate to PHP are exactly the kind of people who are unwilling or unable to appreciate the beautiful elegance and power of a system like Symfony. The people who need something like Symfony gravitate to other languages."
http://www.teamlalala.com/blog/2010/04/11/the-symfony-commun...
There's actually probably multiple reasons, but that's the easiest one off the top of my head. PHP's used in all kinds of web places that Ruby isn't, mostly because Ruby's not a great fit in those places.
Hello <?=$name;?> it's <?=date("h:i:s");?>.
I've never met anyone who does 'ruby pages' and drops ruby in to various files as needed for small stuff. You can do that and many people do with PHP.
All web work I've ever seen done in Ruby uses Rails or Sinatra or some framework. Only a portion of web work I've seen in PHP uses any community framework. This is just the way it is.
Your point on ecosystems is correct - the ZF system is probably the closest modern one out there (indeed, ZF should have been called PEAR2 years ago) - Symfony uses bits of ZF libraries as needed. But because of the naming, people think you use all of it. Because Rails was/is the dominant web framework in Ruby for so long, it feeds on itself, and people end up writing cool stuff for Rails, and more people use it because of the cool stuff, lather rinse repeat. The cool symfony stuff mostly can't be used outside symfony, CI stuff not usable outside CI, etc.
There's some cool stuff in Grails I use - it's not possible in PHP (maybe in the future if the language changes) so I use Grails when need be (or when I feel like it). No amount of libraries/frameworks in PHP will make up for the missing language features, and this is the heart of your last paragraph (which I agree with). I still use PHP for a lot of stuff, but have expanded out to other tools that fit other use cases better.
I do wish I'd see other camps being as broadminded as they exhort PHP users to be, though. By and large, there's stil loads of people that try to do all their projects in Rails, or J2EE, or .NET, or Django, or whatever. PHP's got its place, and sometimes really is the best choice for a project. Ultimately, there's still loads of fanboys out there in all camps. :/
This is not a good thing! It's one of the biggest reasons why the overall state of PHP development, @fabpot and friends excluded, is absolutely terrible.
Well, that's your problem right there. Don't blame C for Windows XP.
If I'd be forced to use PHP for my projects — which, luckily, I'm currently not — I'd pick Symfony2 over Yii, CodeIgniter and CakePHP any day.
I really enjoy using CakePHP personally, and I found Symfony v1 a headache to start with and never really got off the ground with it. It's interesting to me that the CakePHP 2.0 release got no love while Symfony2 is front page material. Any insight here would be appreciated.
-CakePHP is atrociously slow, even when running with APC, and uses an alarming amount of memory for what you get. Symfony2 is neither slow nor particularly memory-hungry.
-CakePHP is inexpressive; it's very difficult to use it piecemeal. You either use the whole whomp of it or you don't use it at all. Symfony2 is modular and easily used for exactly what you need.
-CakePHP is stuck in the past; any framework that is intentionally made compatible with versions earlier than PHP 5.3 is short-changing its users by not taking advantage of exactly what the language is capable of doing.
It has no real redeeming features. (Note that I wouldn't recommend PHP in any greenfield development today, but if you have to do it, Symfony2, or at least the Silex core, are no-brainers.)
CakePHP is the only open source project I was involved with where the core developers mailing list was private, new major versions were developed in private repos, and inline documentation was banned (because "inline code comments often go out of date").
It's a critical realisation that often the health of a community is more important than the product itself.
Now, I just finished going through the Symfony 2 internals to see what is so different from Symfony 1. I have to say that, when I realized the paradigm change, I had a WOW moment.
I mean most of the frameworks gravitate around the classical "MVC monilith active record framework" and they all resemble more or less Rails.
Symfony 2 isn't even a MVC framework (although it separates concerns very well), I mean it doesn't even have a Model!!!
At the core it's a Kernel object that is responsible for building a Service Container for dependency injection, into which all sorts of Components get pluged-in as services. And along the way it triggers lots of events to which you can attach listeners.
That's it! Everything else you augment by choosing the kind component you want to use and by configuring the Service Container.
After the little bit I played around with Ruby on Rails I have to say that Ruby is much nicer then PHP, but as a framework I really like where Symfony 2 was taken.
The truth is that when you need to get things does PHP can be a much more convinient tool than ruby-on-rails. The following Blog describe this better than I would ever do: http://www.oreillynet.com/ruby/blog/2007/09/7_reasons_i_swit...
Regarding PHP frameworks: A year ago I decided to try most PHP frameworks. I recall working with ZendFramework, Symphony (not v2 to be honest), CakePHP and Yii. At the end of the day I preferred and used Yii simple because it made easier to start producing something useful.
I may not be an uber-programmer like you, or have a $55,000 college education/loan, but PHP makes it easy, fun and profitable to be self taught.
So, yes, I'm "married" to PHP, much like I'm married to jQuery, but keep your pity to yourself.
Unfortunately, in the beta, you had to place the bundle name/path in a about six different places for a single bundle. It was somewhat cumbersome to do manually (although there was a rails-like generator script).
I also wasn't trilled with the debug messages. Half the time they gave information about the internals of the framework and no reference to the place in my bundle where the error was.