Harrie's blog
Dinsdag, 27 januari 2009My framework is better than all other frameworksTrackbacks
NU.nl; the back-end
It's long overdue seeing as the new site has been up for about two months now, but better late then never! Somewhere in March of last year, we heard we might be doing the site NU.nl for ilse media. Readers not local to the Netherlands might not know it
Weblog: Ibuildings Blog
Gevolgd: Feb 12, 13:06
Surviving a plane crash
When we started working on NU.nl, around a year ago, we knew that one of the most important aspects of the project would be performance. With an average of 7 million page views a day NU.nl is the most frequent visited Dutch news website. But if that wasn'
Weblog: Ibuildings Blog
Gevolgd: Apr 14, 19:45
137 CMS Systems
At the moment, Wikipedia's list of content management systems features 137 unique CMS products. 59 of these are written in PHP. And that's only the ones that Wikipedia finds 'notable', which means these are the ones that have significant usage or larg
Weblog: Ibuildings Blog
Gevolgd: Dec 17, 13:49 Reacties
Geeft reacties weer als
(Lineair | Samengevoegd)
Harrie, that is so true. Although I contribute and promote CakePHP, I've also used Zend Framework, Code Igniter and Kohana. Add to that Rails a few years ago and my current forays into Django and Pylons, and I'm a person who knows more about frameworks (and their differences) than I ever expected.
Right tool for the right job is the mantra, so hard to get people to accept that though.
Riding the right technology is just the art.
I got a framework that does all that. Look here: http://www.php.net/
I've been using The Andromeda Database Framework for over a year now and I must say it the best framework I've ever used. It goes beyond other frameworks and puts the business logic in the database.
http://www.andromeda-project.org
I've been using Zend, Cake and CodeIgniter for quite a while now and generally find that CodeIgniter with the necessary Zend classes dropped in (whilst I'm not too keen on the ZF as a whole, I do have to admit there are a few very nice classes in the ZF) it can actually handle pretty much anything you want it to. I very rarely need to look at a project and consider using anything else.
Though there are some very small projects where I think using any framework, no matter how light the footprint, is overkill.
My work is all very time-pressured client projects, and I've really had to struggle to find time to learn one framework (Zend). Consider yourself lucky if you've the time to learn a bunch of them
Yes, I code for Zend Framework, but I've said all along that developers need to evaluate frameworks carefully against both their own needs and the client needs. These considerations may include PHP version, the expected audience of the application (large social networking sites have different needs than intranet applications, for instance), experience and number of developers on the project, and more. In some cases, you may find that a mixture of frameworks and/or libraries suit your needs best (I've heard of ZF being used within Symfony, CakePHP, and CodeIgniter projects, for instance -- as well as PEAR). The point is that good development requires not only coding but selection of the toolset you use when coding.
Good article, Harrie!
I'd like to mention what I call The Golden Rule of Frameworks: All other frameworks sucks.
What I like about Zend Framework is that you can package all the files and deploy an RPM to all your servers in seconds. Then you can package and deploy your applications separately. Similar to what you do with Django for example. The size of the application doesn't really matter. However, sometimes it doesn't make sense to use a framework at all, or even PHP. I'm now building mostly Web services, and although I'm not that familiar with Zend_Tool_Framework, I have to say that it opens a new world of possibilities. I'm very grateful to Zend in a way, because I think ZF is the only reason why I still use PHP.
This is the exact reason why I'm working on my own and a lot of people do. Framework is kind of a buzz-word in the php world lately but php offers so much functionality and different approaches that this is a normal process. Evolution will show which frameworks will survive.
I'm going to add a link to this article when I write something up about my framework. This goes with "when to use" and "when not to use" lists. After all, I tailored it to my needs. I exactly know of what it is capable, about the exceptional speed if used the right way (which only I can do) and I have control over any aspect. This makes it possible - for me - to use it everywhere as it is minimalistic and can be extended. So yes, in that way it is better than all the others, but only for me, and I'm aware of that. PHP Frameworks are on the rise because one is not satisfied with the others, so people start to create them in the way they expect it to work and this very much only works for those people. The mainstream frameworks (cake, zend, symfony) are trying to do just what you described, offer you any possible solution for any web application. This is bad in the way that they are not really suitable for specific projects, making custom frameworks more important. I very much enjoy reading code of the big ones. I try to decide which solutions are good and which ones are bad and mix it with my own ideas to implement it finally. Pretty much trying to get the most out of it, but of course, only personal preference as said. For big projects you just can't tailor a framework to one individual's need but you have to target the biggest possible group.
Why not take a look at http://www.andromeda-project.org might save you the time of creating your own.
You kind of don't understand, but seriously: no
Your point is clear (no need to repeat), but this post is explicitly not about what framework is the best framework
This is the reason why I did not post any crazy links about it here
Actually my reply was ment for Donald
True. I was learning ZendFramework, Codeigniter & Symfony for a long time and found that no-one of them will not offer to webdeveloper a super-universal-application-building-mechanizms... All of them have own advantages and disadvantages.
By the way, now I'm preparing to Zend PHP5 Certification and learning symfony at a time, so some of the framework's patterns could be optimized. Sorry for my English - it's not my native language - I'm kazakh (Kazakhstan).
Well one Framework is not enough, you need to write your own framework arround all the others,
so if you are not using zend + symfony together with your own Framework, a JS Framework and something extra you are not skilled enough
I see all your arguments, but something to consider is that productivity with a certain framework doesn't come with the first project. I've evaluated a lot of frameworks over the years (e.g. on the PHP side: Cake, Symfony, Prado, CodeIgniter, Zend Framework, PEAR ...) and I tend to stick with what I know best -- currently PEAR and the Zend Framework.
The reason is -- I'm just faster with those two than if I'd use e.g. CI for another project. Which might be more appropriate cause it's smaller and faster, but on the other hand developer time is more expensive than hardware. I can see all the advantages of knowing the right tools, but in reality you will hardly ever find someone who's really good with all of them. Let's be honest - chances are, you will find people that know a little bit of everything and even though that's great, they also tend to create solutions that are not good because they just don't know enough about a single framework to utilize it to the fullest. There are exceptions to the above, but they are exceptions. And well, maybe in a perfect world, you'd throw whatever in the mix to "use the right tool for the job", but let's be honest (again) -- "next stop, maintenance hell". I don't even want to go there. So I rather have a project in ZF, in CI or in Symfony than all three blended together because ZF has a superior HTTP client and Symfony got faster routing and so on (those are all just examples). And if I have a team of people who work really well with PEAR, then I'll do all my projects with PEAR because they are getting better and faster with each one of them. Productivity is one of the greatest advantages that come from frameworks. At least IMHO -- others include all the developer goodies (e.g. standard API, docs, CS, etc..) which all add up to what I call productivity. And of course it never hurts to look left and right and be open for inspiration. Tunnel vision will get you nowhere. On the other hand, learning five different frameworks is not a great advice either. (Unless you have a lot of time, of course.) Another thing is to be aware of the obvious short comings in a framework and to be able to work around them and have a solution when the solution is needed. E.g., years might pass before the little corner coffee shop will have to scale their ZF based website, but other clients might get their sooner.
As an experienced php developer (10+ yrs) I've tried a lot of stuff. Mostly I was working in pure procedural PHP but with php4 I've started using OOP and for the company I worked at the time I developed our own framework that was a little bit of a mixture of a real framework and actual website/cms components (php in combination with js and html). Then I've stopped working for that company and I was left with nothing since the company owned the rights of that framework.
I really liked that framework since I could build a fully functional CMS administration and front end site in few days! So my intent was to build a new one from scratch. That was more than 2 years ago. Thankfully I've found out that there are many other frameworks out there that are trying to port/copy/improve ROR. After considering sympfony and CI I decided my best shot is with cakePHP. And now, after two years I am really glad I took my chances and I chose cake! To me cake is the best framework because is just that. A framework. It is not bloated with 12455643 components I don't need. And I can add them (PEAR, ZF classes or others) very simply. The only two things I would improve in cake are: - adding a light version (maybe without routing or extra database layers, etc) - and full support to jQuery. Thats all folks, sorry for my long comment
The wish: "Adding Light Version to Cake" actually proves the point of the original post
I really love cake, all the goodness readily available for it + extension possibilities. The only(?) thing it's not is "light". For that extra performance you better look elsewhere.. QUOTE: To me cake is the best framework because is just that. A framework. It is not bloated with 12455643 components I don't need. Which is exactly the reason I DON'T like Cake, because Cake is just that: bloated with 12455643 components I don't need. It wastes resources, loading arbitrary classes and modules which you might, or might not need. It's a slow piece of #$&% I have tried all the popular frameworks and I have a very strong opinion about them all, especially after hearing Rasmus Lerdorf giving his famous speech about his views on PHP frameworks. To me a framework should be out of the developers way as much as possible. It should provide a set of basic tools or boilerplate code which a developer finds too tedious to write himself. If a framework restricts the developers 'movement' in ANY way, the framework has failed. Anyone who tried a few php frameworks should be able to scrap at least half of the popular ones based on those requirements. To me one of the few viable php frameworks are Zend and Code Igniter (or Kohana). They both hand you tools, encourage you to use MVC (but don't restrict you to it), and do their best to keep out of the developers way as much as possible having a tiny footprint. No wonder Code Igniter is sometimes up to 200% faster than any of the other frameworks mentioned. The fact that the two combine pretty well says something about the modularity of the frameworks. You could add a dozens design pattern labels to that sentence alone: in fact most CS design patterns are loaded with phrases that try to express exactly that: the ability to mix and match pieces of code, easily, without breaking anything, anywhere. I'm not saying that either Zend or CI are silver bullets, there is a right tool for every job after all, but speaking from experience, like Phil, I'd say CI with Zend solves most problems for any developer. It's like the swiss army knife you carry around with you opposed to the hammer that is most other frameworks. You could extend a swiss army knife to make it into a hammer, but you can never turn a hammer into a swiss army knife... QUOTE: If you're looking for a 'click here to download' link please stop searching, because such a framework doesn't exist. CI + Zend might not be the best in 'every situation' but that's not what most people are looking for. Most developers want a standard solution for MOST of the situations, and will write their own custom made code for the exceptions. I dare say that CI + Zend might the framework Harie was talking about, even though he was being sarcastic
This is a question that is in my mind since a long while, what framework should I learn? should I use a framework?
In my latest project experience I tried to learn Drupal, that more than a CMS is a "content management framework", but due to the short time and close deadline, I chose to use my own framework inspired in the Rasmus article "The no-framework PHP MVC framework" and at the end I felt very happy using that approach. My final recommendation is code whatever you feel comfortable with, if you feel comfortable coding in some framework then keep doing it, but if you feel like using your own then do it that way.
"One of the arguments for using a single framework is that the developers would be able to specialize themselves in using this framework and it will allow them to work more efficiently. Using the right tool for the right job however, will make you work more efficiently overall. Splitting a piece of wood using a hammer isn't efficient and the quality of the final product is poor, no matter how skilled you are in using the hammer."
But what if you are so involved in a framework project (the hammer in your example) that you can take a look at another framework (an axe), pick up the right things from it, and add it to your framework, so next time a user using the (hammer) framework has the choice to use it in "axe mode". What I meant with that is that it is a matter of your choice, I mean, you can be interested in only pick up this or that framework and use it for a given project, or you could use it, understand how it works and do some contributions back when you find something that this particular framework doesn't do (this is how open source software works anyway). So, I think that instead of jumping from one project to another, it is a better option to stick to one framework, the one that suit your needs the mos, keeping an eye on other projects, and if you find something that is done better in another framework, or a feature missing in the one you've choose, work to get that done. (IMHO)
Great article! I have been reading all about this framework vs that framework and why I am leaving from this framework? And why I am moving to that framework? Or There should be no framework and finally at the end they tell you that It depends on your project and there are no such as best framework MBF.
You then stop searching for which framework and you go back and star to search on how to use the PHP itself better? and how you can develop more secure, robust application faster and apply best practices when coding? And you find the answer is: by using Frameworks. Ok, There are more than 20 or 30 or more.. PHP frameworks with different capabilities out there. Choosing the right one is very very important. The good news is that I have done this search, I have been through all comparisons and pro/cons, Advantages/Disadvantages, the short list, this VS that, why leave this and move to that? lol, Don’t wory I tell you which is the best framework this time. The following is the short list of four of the best (My search&opinion): CodeIgniter, Zend, Cake, Symphony and yes! I do think this is in the order that they come too. It does make perfect sense if the best of frameworks together could be your Swiss knife! After all, the CodeIgniter by being the fastest, lightest framework, accompanied by the Zend’s greatest library of classes is the MBF My Best Framework or Marcus’s Best Framework hmm.. That is following the My or Your custom framework thig too, so just put your initial +BF and there you go, with Your Best custom Framework but for god sake don’t go with something like Cake & PEAR please. |
Blog










