Learning Priorities
Moderator: General Moderators
- Jonah Bron
- DevNet Master
- Posts: 2764
- Joined: Thu Mar 15, 2007 6:28 pm
- Location: Redding, California
Learning Priorities
Up to this point, I haven't really worked with any frameworks/tools (other than Skeleton). I'd like to start working on some practice projects with other tools; what should I familiarize myself with first? My guess would be to start with Zend, as it seems to be pretty much the industry standard. Then move on out to other frameworks, CMSs, and ORMs?
-
maneetpuri
- Forum Commoner
- Posts: 60
- Joined: Tue Oct 07, 2008 6:32 am
Re: Learning Priorities
Hi,
If you are doing development using PHP then Zend is one of the best frameworks and most popular one. You can also look at CodeIgniator as well.
Cheers,
~Maneet
If you are doing development using PHP then Zend is one of the best frameworks and most popular one. You can also look at CodeIgniator as well.
Cheers,
~Maneet
Re: Learning Priorities
Well, take a look at Symfony 2. I haven't tested it yet in practice (although I plan to do so), but I was looking at the source code and the overall architecture - it is certainly designed better than the "existing" frameworks, especially Zend Framework, and probably the first one from the mainstream whose authors finally realized, what OOP actually means.
Why not ZF? Yes, it is an industry standard, but over the years it became heavily overloaded with tons of unnecessary stuff and bad design decisions. On one hand, it uses lots of design patterns, on the other one, it breaks the fundamental OOP design principles almost everywhere. The internal architecture is based entirely on magic, and the incredible dependencies between components make any customization extremely hard (try to replace the default autoloader with something else, and you will see. The authors claim they are PSR-0 class naming standard compliant, so it should be possible, but it is not without hacking ZF code).
Basically speaking, many frameworks etc. focus on a single goal. Usually they are relatively simple websites with some CRUD panels as backends. Although it is possible to make some more advanced applications with them, but you can get killed with magic. Use the right tool for the task you are going to do. Usually, you know one framework - you know them all.
Why not ZF? Yes, it is an industry standard, but over the years it became heavily overloaded with tons of unnecessary stuff and bad design decisions. On one hand, it uses lots of design patterns, on the other one, it breaks the fundamental OOP design principles almost everywhere. The internal architecture is based entirely on magic, and the incredible dependencies between components make any customization extremely hard (try to replace the default autoloader with something else, and you will see. The authors claim they are PSR-0 class naming standard compliant, so it should be possible, but it is not without hacking ZF code).
Basically speaking, many frameworks etc. focus on a single goal. Usually they are relatively simple websites with some CRUD panels as backends. Although it is possible to make some more advanced applications with them, but you can get killed with magic. Use the right tool for the task you are going to do. Usually, you know one framework - you know them all.
Re: Learning Priorities
I vote for the Zend Framework. I've went through all the major frameworks and for my preferences it is the best by far. Don't judge by what others say though, try it for yourself and see if it fits your style.
I suppose you're familiar by now with SVN, and it never hurts to add another revisioning system to your toolbelt (Git is popular nowadays).
I suppose you're familiar by now with SVN, and it never hurts to add another revisioning system to your toolbelt (Git is popular nowadays).
Re: Learning Priorities
To clarify: I haven't written that ZF is a crap. From the existing frameworks, it is definitely one of the best, if not the best one. But it does not mean that it is well-designed and everything is fine about it. It means that other frameworks suffer from even greater problems, and if there is an alternative that could be a breakout, why not trying it? Especially that Johan wants to gain experience in frameworks and the architecture, the ability to keep the self-established conventions etc. actually matters (understandability, learning good practices).
- Jonah Bron
- DevNet Master
- Posts: 2764
- Joined: Thu Mar 15, 2007 6:28 pm
- Location: Redding, California
Re: Learning Priorities
Okay, I'll definitely check out Symfony and Zend. And Git, as well.
[via droidx]
[via droidx]
Re: Learning Priorities
CakePHP is quite easy to learn and very extensible. We use it as a standard at my company.
Re: Learning Priorities
When contrasting codeignitor vs Zend, Zend is more robust & verbose. To some that is a disadvantage (harder to use), to me its an advantage (less ambiguous code, etc.). Zend has excellent test coverage, if you think Zend is "bad design" you might want to re-think what that term means. Just because there are some paths of code within Zend Framework that you don't invoke doesn't make them bloat, because for every conditional your use case doesn't invoke, I have a use case that does.... If a code base has high test coverage its not bloated......
Basically people that prefer codeignitor seem to be too lazy to type out a long(er) more descriptive function name. It seems every method is abbreviated. The line of thought that less code is more is wrong. For example from the CI documentation
In Zend instead of passing TRUE as the second parameter, they would have some class constant that describes the significance of this. That's my gripe. CI is too easy to use (faster to type the code). So easy that the code is ambiguous (harder to read the code). What is the purpose of 'TRUE' here (too hard to read this code)? You'd have to navigate the implementation of xss_clean() to know for sure. In Zend they'd have a constants ALLOW_IMAGES & DISALLOW_IMAGES (harder to type, but easier to read).
It takes a fraction of a second more to type the constant, but you only type the line of code once... you have to read that code over & over. Is saving a few seconds when you write the line worth running across mysterious parameters & getting confused in the future when you revisit your old code?
Zyxist, the above part of my post isn't aimed at you but... this part is:
>The internal architecture is based entirely on magic
'internal' architecture? Never heard of such a concept. lol Personally I don't think its hard to replace the auto loader in Zend. In fact you have to explicitly 'ask' to use the auto loader. If you just require() the classes you want to use there is no autoloader forced upon you by default, so I would disagree on that point as well. The only time Zend's autoloader is involved is when the autoloader is explicitly included with an include()/require(). In other words to NOT use the autloader simply do NOTHING
Basically people that prefer codeignitor seem to be too lazy to type out a long(er) more descriptive function name. It seems every method is abbreviated. The line of thought that less code is more is wrong. For example from the CI documentation
Code: Select all
if ($this->security->xss_clean($file, TRUE) === FALSE)
It takes a fraction of a second more to type the constant, but you only type the line of code once... you have to read that code over & over. Is saving a few seconds when you write the line worth running across mysterious parameters & getting confused in the future when you revisit your old code?
Zyxist, the above part of my post isn't aimed at you but... this part is:
>The internal architecture is based entirely on magic
'internal' architecture? Never heard of such a concept. lol Personally I don't think its hard to replace the auto loader in Zend. In fact you have to explicitly 'ask' to use the auto loader. If you just require() the classes you want to use there is no autoloader forced upon you by default, so I would disagree on that point as well. The only time Zend's autoloader is involved is when the autoloader is explicitly included with an include()/require(). In other words to NOT use the autloader simply do NOTHING
- Christopher
- Site Administrator
- Posts: 13596
- Joined: Wed Aug 25, 2004 7:54 pm
- Location: New York, NY, US
Re: Learning Priorities
Zend Framework is free. Zend has other products that cost money, but the framework is an opensource project.jaydeee wrote:zend looks good but I need free.
(#10850)
- Jonah Bron
- DevNet Master
- Posts: 2764
- Joined: Thu Mar 15, 2007 6:28 pm
- Location: Redding, California
Re: Learning Priorities
I missed your post there Josh; I rarely check this forum. Good insight.
- John Cartwright
- Site Admin
- Posts: 11470
- Joined: Tue Dec 23, 2003 2:10 am
- Location: Toronto
- Contact:
Re: Learning Priorities
Oh please. Don't make such opinions public unless your prepared to explain your perspective of the architectural benefits of one framework over the other. Otherwise, this kind of misinformation can potentially discredit frameworks unnecessarily (and perhaps unintentionally). Some very intelligent and well recognized names will argue that the fundamental glue which ties Symphony together is crap (DI containers). Others will argue Zend is crap. Who's right? Neither. But at least they provide context to base their arguments on.Zyxist wrote:Well, take a look at Symfony 2. I haven't tested it yet in practice (although I plan to do so), but I was looking at the source code and the overall architecture - it is certainly designed better than the "existing" frameworks, especially Zend Framework, and probably the first one from the mainstream whose authors finally realized, what OOP actually means.