Web Developers, what is your favorite web framework to use and why? A web framework is a software framework that is designed to support the development of dynamic websites, web applications, web services and web resources. A few examples of web frameworks are: Symfony, Ruby on Rails, Django, Sinatra, Zend, Laravel, CodeIgniter, CakePHP, etc. I personally favor Ruby on Rails, and my second favorite would have to be Django. I like these two frameworks because they are simple and easy to develop in, which is a good thing in the real world because it is easier to meet deadlines when working on projects.
My current favorite is Django because that's what I learned first. The RoR community is large and supportive though. I'm starting to lean in that direction for that reason.
I'm sticking with cakephp for now, it does what I need and I know it inside out. Symfony has a very strong following but my one venture into that via SilverStripe was a never-to-be-repeated-nightmare.
None. You can say rolling your own is reinventing the wheel but at least you have control over when it becomes obsolete. I use to love Zend then I heard about Zend2 with an entire new way of using the framework making all of my previous projects functioning on legacy code that will soon become unsupported. Lesson learned.
Agree with you. Have similar experience with CakePHP and Zend. Using frameworks brings a lot of benefits, but all have a lot of downsides. Laravel stands above all PHP frameworks, though it is very complicated.
Slim (PHP) or Laravel as backend and AngularJS as frontend. In that case you can build a web app that later without any modification on the backend you can build an native smartphone app.
Why? I love CodeIgniter and Slim Framework, I've also looked at Laravel, and might invest some time into it in the future.
It depends on what framework you have good command. For me it's Cakephp. I love its simplicity and MVC structure.
I have to go with the "none" crowd. For the most part, frameworks rarely work the way I work, and most web development languages like PHP damned near already ARE frameworks thanks to their massive existing function libraries. Many Frameworks seem to now try to implement programming models that have nothing to do with how the host language works, resulting in them being massive bloated train wrecks of code you'll either never actually use most of, or that piss all over the performance of what you are doing. This can be blamed on things like MVC being turned into more a sick buzzword than a legitimate way to code; since MVC was meant for event driven programming, something web languages universally ARE NOT DESIGNED TO DO! While I can agree with separating logic from processing from output, the true "MVC" model is a needlessly convoluted and pointless way of going about it. Though it gets worse when you get into outright idiotic bull like "templating systems" like Smarty-- which introduce pointlessly bloated and convoluted bull into theme handling, quite often in languages like PHP which already ARE a templating system!!!. Yeah, lets run a templating system inside a templating system, that'll be nice and efficient. :/ Of course, don't even get me STARTED about HTML and CSS "frameworks" which by their very nature defeat the entire reason we even HAVE HTML, CSS, separation of presentation from content, and on the whole developers are dumber for them even existing. Blueprint, YUI, or the new media darling Bootstrap -- they're all pointless code-bloat and much akin to what Patton said about fixed fortifications, they are a monument to the stupidity of man. IF you "need" one of those -- hell, if you even find benefit in their use, you probably don't know enough about HTML or CSS to be making websites in the first damned place. Though that's a problem REALLY common with back-end developers; in PHP for example most people vomiting up code don't know enough about HTML to be making back-end code in the first place. PHP is a "Hypertext Preprocessor" -- it exists TO OUTPUT HTML, so maybe, just maybe you should master HTML BEFORE you start screwing around in PHP? One look at the code vomited up in the default themes of systems like Turdpress, Drupal or Joomla is proof enough of that. Then of course you have the halfwits who call CMS systems "frameworks" -- uhg. Makes me whip up the knife hand ready to deliver a pimp-slap. Naturally you then have the massive train wrecks of stupidity known as JavaScript frameworks - Jquery, mootools, prototype -- which by themselves are usually larger than I'd allow an entire site template -- HTML + CSS + SCRIPTS + IMAGES, not counting content or social plugins -- to reach. They are the pinnacle of stupidity, and exist more as a crutch for those who refuse to learn to use JavaScript properly, than they do as legitimate ways to make websites better or more useful to users. MOST of what the scripttards sleaze out using things like jQuery falls into three categories -- stuff that could be coded more efficiently without the framework, stuff that's CSS' job, or stuff that flat out just doesn't belong on a website in the first damned place. Really server-side frameworks are a waste of code, though I can almost see a reason for them to at least exist. HTML, CSS frameworks are idiotic bull that I fail to see a legitimate reason to ever use, and JavaScript frameworks are fat bloated trash that just piss all over every website they are used on. It's like the further you get from the server, the worse they get. There's a reason with my own JS library I don't call it a framework -- "framework" to me has started to have a negative connotation akin to "designer", "SEO Expert" or say... "pedophiles". Preying on the ignorance, naiveté and innocence of others.
95% of the web sites that I have seen that "require" Zend, Cake, Symphony, CI, ..., etc. ONLY make use of MVC in the simplest form, simple templating, and *sometimes* database ORMs. As deathshadow stated, PHP is a templating system. There's no sense in loading a huge slow library that parses plaintext files to dynamically generate PHP files to output your data when you can simply use the PHP language to output the same data without the unnecessary bloat. As for database ORM's...I see the benefit if you don't know SQL or have dozens of developers of different skill sets working on the project. But again...every site I've seen only uses the ORM's to create simple generic database functions that can be done directly with PDO faster and with less code. What they say: With a Framework you will be able to rapidly develop an application in half the time using secure well tested code. Translation: You will spend 100+ hours reading out dated documents and playing around with the framework to be able to write half ass code using a library that has been well exploited and possibly out dated or depreciated by the time you are finished. What they say: By using a standardized coding convention anyone one can take over or help out with your project. Translation: As long as you find other suckers who have spent 100+ hours learning how to write half ass code they will be able to easily help you write half ass code for your project....at an additional cost. What they say: You will write less and do more. Translation: You will actually write more or just about the same with the help of 75,000+ more lines of code that you don't need from our bloated library. You will sacrifice performance and speed to shave minutes off from development. In fact, technically speaking if you want to shave time off from development you should spend more time on preparation and planning. I am someone who spent countless hours/days/weeks/months to learn Zend and other frameworks. I literally submitted to other developers and forced myself to do things THEIR way. I crossed my fingers, trusted and forced myself to believe that one single system could accomplish anything that needs to get done. The end result was wasted time, a shit load of code to customize the system to my preference, and very sluggish resource extensive code. I learned that you truly need to weigh out your options and there is a cause & effect for everything you do. It was NEVER worth it using Zend. I didn't need it. I'm a programmer. Everything I used Zend for I was able to accomplish in a small <10KB library that allowed me to separate code from presentation, create functions calls to SQL statements, and create templates from PHP scripts. Learn how to program, learn some basic design patterns, and learn the language inside and out that you are using. You will be fine without a framework.
Really that right there I think is the 'tell' of it. If all we had was the old mysql_ functions that we were supposed to stop using in new code the moment PHP 5 dropped, many of the frameworks make sense... but with PDO and to a lesser extent mysqli now real world deployable, along with a lot of the improvements PHP 5 has brought, the need for 'frameworks' is rapidly dwindling... Though I think we simply may be waiting on a shift in what PHP frameworks provide -- I think a good system for doing "named queries" (an early 90's concept that I think needs to be brought back) to make cross-SQL queries easier to deploy for example could actually make a decent library... That some might go so far as calling a 'framework'. Something like my extended PDO object which... gah, forum I posted about it on is now defunct. I should dig that up and make it into something 'normal' people can use... though it was laughable I was storing queries in .ini format files.
I just quoted parts of your post, but sincerely I agree with most of what you say. When it is done, I would love to give a try at the software I'm developing, it "behaves" like a CMS, but renders/compiles clean code that has no link to my software (so... isn't WordPress displaying your theme/plugins.. it is your own software running) anyway, won't post the url here as I don't want to spam (but if curious, check my other posts). What I wanted to say is using a framework or cms should be a temporary solution until you develop your own software if you're serious about your website. Had awful experiences with frameworks that won't support their own legacy code, even in the same versions! (cake 1.2 to 1.3 by instance) So, I would always go with clean PHP code instead of a frankenstein. Have a nice day! G
Definitely Laravel, I discovered it yesterday and it's the first framework I got along with, all the other frameworks were just not unique and powerful as Laravel.