Ok. Once I get my skill sup with PHP, I want to learn one of the many open source frameworks out there. I am going to list the ones I know and have considered: CakePHP, CodeIgnitor, Yii, Laravel, Zend, Symfony, and Kohana. From my research: CakePHP- one of the most widely used CodeIgnitor- 2nd most widely used and faster to learn than CakePHP, but lacks some features of CakePHP Yii- One of the fastest out there with a good amount of users Zend- one of the most robust and complete frameworks with the largest learning curve Symfony- Right up there with Zend. One of the best and most complete and secure ones available Kohana- Dont see too much about this, but the developers that use this love and sware by it. The underdog Laravel- The newest BUT the one that has alot of people switching over. Excellent reviews and "awards". People love this. All the other frameworks out there have not had enough "press" for me . These seem like the most used. I would like to know whats the "best"(,- I know thats relative). Can the people with actual experience with different versions and systems, tell me: 1. Whats the Fastest to learn. 2. Whats the most complete. 3. Whats the current 2014 most requested by companies. 4. Whats the one you recommend I focus on P.s. Is it possible to learn AND function with TWO frameworks?
You left out "none of the above" in the poll above... Learning frameworks, while perhaps good for a potential job, should definitely be secondary to learning PHP properly - when it comes to learning a framework, it all depends on what you want to learn and why you want to learn a framework - I would personally suggest learning something that is popular with employers, if you want to learn it for getting money when working - maybe Zend (simply because it's popular when it comes to business environments). Just be aware that most businesses still use the former version - not many have moved to the latest version of Zend yet. They're fairly different. However, mostly, PHP frameworks are... usually bloated crap, and should mostly be avoided.
Ha! Good point. I guess all frameworks will add additional code to the script(even if minuscule). Yes. I was generally thinking toward the job side of things. And maybe potential benefit with common code. But then again, I can have my own common code to be copied and pasted...... I do plan on getting very good at PHP before I checkout any frameworks. Thanx.
I take the opposite stance to @PoPSiCLe and see learning a framework as being a good learning tool. When you delve into the code that other people have written and had peer reviewed and polished you get to see how they solve security and speed problems. You see first hand how they've designed their system to be able to be adapted and to evolve. I learned more from breaking mambo, wordpress and cakephp than I ever could have from php.net and w3schools.
I would start at the basics first. Just regular PHP, then move into the frameworks. Sure you can learn a framework and program something, but do you really know how it works a higher level up? It will allow you to better debug problems and be a better programmer. I come from the time there were no frameworks. Back when you had to write Javascript the hard way and Composer didn't existed. My suggestion is to pick a framework that you find easiest to understand and go with that.
@sarahk while I can see learning a framework as a useful learning-tool, if you learn that way, but as for learning proper code, there is no guarantee that you'll learn anything useful - just how that framework have gone about beating PHP into submission. Wordpress, for instance, I think still uses mysql_ (maybe they've upgraded, I haven't looked at the core-files for ages). Also, you learn how to use the framework's built-in functions and classes, but you have next to no control of how they do stuff, unless you go in and look at the core code (which, of course, you should). The main problem with frameworks is that they're built to do "everything" - hence, they contain a shitload of over-the-top complicated crap not needed in your own project - and I've still yet to see a framework with just the basics in the minimal core files, with plugins for added functionality - ie, you always end up with more code than you need. Also, quite a few frameworks are a PITA to modify, if you need to - albeit, Wordpress for instance, while not strictly a framework, have a theme-based functions.php file where you can, if you want stuff to behave properly and not break every validator in existence, create your own functions to replace the built-in ones - the problem is that you have to do this to begin with. The good part about building your own system from scratch is that you can decide what you need, and how to build it - it doesn't necessarily mean it's gonna be better, but at least you're 100% in control.
I've seen enough newbie code to know that being in control isn't always going to be a good thing. I'm coming from the perspective of someone who has had to peer review the work of colleagues, help out in forums, used WP/Mambo/Joomla plugins. Sometimes the code is great but I've had plenty of times where I've actually thrown it out and started from scratch the code is that bad. On the other hand, I've seen some brilliant code and learnt from it - often not immediately but down the line I'll be trying to write something elegantly and remembered something, and known that it could be applied to the current situation - usually a problem solving strategy, not the code itself. If people haven't been to programming workshops or done papers at school/uni then they aren't going to know why MVC is worth the bother of writing all those extra lines of code, or how OO can save them time in the long run. They have to find out by either recreating the wheel, reading articles or seeing how other people do it. I suspect many just want to roll up their sleeves and get going and set themselves up to make huge mistakes.
All respectful ideas and opinions. My plan is to get great at php and then (depending on where I am at in life) I may look into laravel or Zend. Maybe. We'll see
My main question is: are you learning php for your own projects or do you intend on getting employment from another company using your skills? For employment, Zend is the way to go. Magento is based on it, and many web dev businesses use it. Otherwise for personal only usage, either build your own, or get comfortable enough with one of the other frameworks and make it work for your needs. I truly appreciate the convenience that a framework can provide. I use one on most of my projects and I can develop fairly complicated applications in a fraction of the time that I could do it without a framework. With that being said, I share much of the sentiment of PoPSiCLe . I first think it's very important to get a solid foundation of whatever programming language you are planning on using before jumping onto frameworks or any pre-build platforms. This isn't just for the purpose of knowing the general usage of the language, but it's also to prevent you from creating poorly coded or non-secure programs. If you think a bad programmer can write a mess of code on their own, you should see what someone can end up with when you apply bad programming to a framework... As to their bloat, it really can't be understated. Something as simple as a function to format a date can use a megabyte of memory due to absurd autoloading and recursion that exists in most frameworks. Trying to debug a database query through an ORM can result in hundreds of pages of output for a single database call. So let's just assume you are going to end up using a developed one. As stated, if it's for employment, Zend is the way to go. If for personal, there's 2 that I would look at closer, Symfony and Lauravel. I prefer developing on symfony, and have since pre-1.0, but between them they are all going to be similar in learning and features. Both can be extensively customized. Symfony gets a bad wrap for being bloated because the vanilla build has a lot of unnecessary libraries that can and usually should be removed for production. It and probably yii would be the other 2 considerations for employment / business usage. Based on benchmarks and feedback I would also check out Phalcon as it is written in C and pretty much blows everything out of the water in execution time. I have a hard time believing Cake is bigger than any of these. It got popular because it got some good press and it has a cute name, but otherwise is inferior to just about every other one out there. I'm not sure if it's changed now, but it had some significant restrictions and proprietary requirements and really wasn't a contender to the other frameworks.
Getting basics of PHP perfect and then switching over to a Framework is always good. I would not prefer Codeigniter, as the developers of CodeIgniter have kind of stopped developing further. That is what I last read, maybe I am wrong.
I definitely understand... Yes. As of now, it will be for personal use. But I may head the route of an employeed developer. If so, I will look into the Zend down the road. I did see several companies asking for CakePHP, Codeignitor and Symfony.... But in every context, it was pretty much "You should have experience with atleast one framework" and more so "If you have experience with X, Y, Z, then thats a plus"..... We'll see what the future holds. But as recommended, I will definitely be working on getting extremely proficient at PHP way before I go into any Frameworks. Thanx
Yes. CodeIgniter is popular.... Codeigniters last release was 6-5-2014.. CakePHPs last release was 2-9-2014.. And all the other main frameworks are still in development(If im not mistaken).
According to me you should learn core php first then go for the framework, if you want to develop something new. If you want to just develop website then you can use smarty or symphony framework
Yea. I'll definitely get skilled at core php before driving into any frameworks. Symfony does seem very popular. May look into that disc the road
My vote is Yii, it has a moderate balance in all aspects. fast enough, secure enough, good community and etc...
I recommend focus on PHP 5.4 and OOP. Good idea to read about PSR-0 and Composer. Only then you can move to frameworks. Laravel is my choice, but generally all MVC frameworks are the same. If you stay with the CodeIgniter 2, look to DataMapper ORM