views:

199

answers:

10

I'm starting to architect a quite complex web application. The implementation is probably going to be done in PHP, though if there are impressive reasons to choose a different environment I might be convinced.

I've looked at tools like Symfony and CakePHP. The problem is that it feels like they're relatively low level for a modern Web 2.0 application. They handle the basic things like MVC and scaffolding, but not the more advanced UI elements that I'm looking for. Here are some of my requirements:

  • Single page architecture. With minor exceptions, there should be no page refresh. All actions are done via ajax, the way it's done in gmail, and to a lesser extent in Facebook.
  • Ajax layout and widget handling. Not only the application doesn't refresh the page, but the developer can specify the layout and load various widgets into different parts of the page. This is somewhat like iGoogle, but should be better integrated.
  • Support both on the client side and server side for AJAX widgets. It should be trivial to display the result of a select statement in an AJAX table/array like http://developer.yahoo.com/yui/datatable/. This should also apply to other widgets including
    • Trees
    • Menus
    • Forms
  • Speaking of forms, there should be easy integration with client side validation
  • Signup/Authentication/Authorization. Including all the housekeeping things like forgot my password, CAPTCHAs, etc.

There's more, but I think I've given enough details so that you get an idea for what I'm looking for. Basically, I'd like to engineer a modern Web 2.0 app and skip writing, testing, debugging things that most web applications need to do. And yes, I know I can take YUI or jQuery and slap it on top of one of the regular platforms, but then I'd have to write all the glue. Now if there are modules that do this, that would be interesting. So if you say, take Symfony + modules xyz + jQuery and there's your answer, I'd be happy to hear that.

Finally, in terms of priority, I'm looking for something that's scalable, reliable, well engineered more than something that's easy to learn and deploy.

+1  A: 

I do not know if this matches all of your criteria, or if you ever will find one. However, I like the Zend Framework myself.

Brad F Jacobs
A: 

CakePHP is pretty good

Adam
+2  A: 

Since you are looking for all things AJAX, why not try GWT? Its not PHP I agree, but it makes writing AJAX applications easy for developers.

ShiVik
That's actually a pretty good idea. I was focused on PHP and maybe Ruby that I forgot about GWT. It tends to have the drab google look, on the other hand it's incredibly optimized for speed and being cross browser.
Ben
+2  A: 

I agree with @Iznogood. What your looking for is not actually a framework but a talent.You can make any framework as "igoogle-ish" as possible if you know what your doing.

I suggest look for a framework with a huge and active community like, CI, Cake and Jquery. Search/ask the community for the specific things you need. Plug it in and Presto!

But I'm afraid you'll have to write some of it.

sheeks06
You might be right that what I'm looking for doesn't exist, but I'm not looking for talent. I'm looking for the next generation in frameworks, and it looks like maybe it's not there yet. ShiVik has a point that GWT might be it.
Ben
This is as close as we can get. :) Glad we have communities who can help us.
sheeks06
A: 

As for the UI and AJAX portions - the server side technology matters little, and it's more about browser-side technology and interaction mechanisms, as well as DOM manipulation.

jQuery is my favorite for that. As for the PHP back-end, I tend to develop it with my own codebase that's grown with me over the years.

But all this takes a lot of practice, knowledge, education, research, reading, and posting questions on StackOverflow.com ;)

jeffkee
BTW I'm surprised at how many of the answers don't seem to realize that AJAX is NOT something that you run with PHP.. but rather, AJAX is the gateway from your UI to the PHP or ASP or whatever else may be in the back-end of the website... They are totally different concepts. There is no such thing as a PHP AJAX module, because PHP is server-side, and AJAX is client-to-server. AJAX can call upon the PHP/ASP/VBScript etc. to interact with the server and its database etc.
jeffkee
+2  A: 

If you don't mind using Java, there is ZK:

http://www.zkoss.org/

I'd prefer using this over GWT.

NullUserException
Thanks, I'll take a look at it. Can you explain what is it that you like about zkoss over GWT?
Ben
@Ben [Here's why](http://www.zkoss.org/smalltalks/gwtZk/).
NullUserException
A: 

I would recommend symfony PHP framework since it has very good support for every feature you mentioned, and it can be easily integrated with Zend Framework - as of version 2.0 coming this year it would be integrated in the package. You can easily set symfony to handle AJAX requests so that it would be perfect transparent layer handling server side.

For me, if you look at THAT heavy AJAX, I would recommend searching for some good JavaScript framework - such as Ext.JS - that would handle all client side functionalities.

Tomasz Kowalczyk
A: 

For the front-end part of your app, you might want to have a look at SproutCore ( http://www.sproutcore.com/ ). Building a Web application with SproutCore feels more like configuring components than writing code. There is no glue code. On the backend all you have to do is accept and emit JSON.

Toshio
A: 

Depends what sort of level you're looking at. If by 'framework' you mean something like Zend or Symphony, then to be honest all the big ones are about as good as each other. They all have strong points and weak points, but none will really meet your criteria.

But your question implies you're looking for something more than that kind of framework. Maybe you're looking for a full-blown CMS platform like Drupal, Joomla or Wordpress?

In that case, again, you need to consider your needs verses the capabilities and pitfalls of each system.

Drupal, for example, has masses of modules, is very powerful, and easy to write your own modules, but isn't object-oriented and doesn't really do MVC, so if that's your bag then you may find it hard to get on with. Wordpress is much easier to get going quickly but is less flexible once you start getting deeper into it.

But again, they all have strengths and weaknesses. If one was clearly the best, it would be an easy choice. But at the end of day perhaps it's better to have several good quality options to choose from.

Spudley
A: 

Have a look at Ext JS, it is pretty good. If it is a commercial project you are doing it isn't free but not too expensive either. It also has a GWT version if you prefer that. This is only for the front end but it is not too complicated to use any backend that can emit json.

ormuriauga