I need to re-architect a PHP application that is entirely procedural. Pretty much every WTF-ism you can ever think of is in this which means that it's likely to be more of a rewrite than anything else.
I want to stagger this and would like to do it with MVC.
Can anyone recommend a PHP framework that is going to help me?
The current database (MySQL) is OK - but the code isn't.
Some updates:
* I consider myself to be very skilled in web programming but I do very little in PHP
* A lot of experience in MVC
* No issues with Design Patterns
* The project is an ecommerce platform
* I am coming from a mainly .NET background
You should take a look at CodeIgniter. It's fast, stable and easy to learn.
I use Codeigniter pretty much all time. It's quite easy to use and it has a light footstep (it loads only classes you use).
CakePHP 2.0 beta has pretty much everything you'd want in a framework. It's fast and it's really good once you've picked it up.
If you have previous experience in Ruby on Rails => Yii
Else if you have previous experience in Django/Spring => Symfony2
Else if you have no experience in any framework & fast way learnig => CodeIgniter
CodeIgniter is probably the simplest answer. It's easy to learn and well documented. However, I prefer Zend Framework because of the templating system, the extensive library, and the new ZF tool. However I found the learning curve on ZF to be a tad steep. I recommend getting a CURRENT book to learn ZF. "Easy PHP Web Sites with Zend Framework" is very good.
http://www.wjgilmore.com/books/read/easy_php_websites_with_the_zend_framework
if you want other decision it's symfony(herder) or Yii(very easy to learn).
Simple project are creating by using(CI), if you project is harder use symphony or Yii.
If you want became ninja FrameworkDev learn Zend
Related
I'm about to develop a web app (PHP/MySQL). I prefer to use the MVC style when developing apps, but I've always struggled writing my own MVC framework in the past so I've started playing with CodeIgniter. After a couple of tutorials I better understand how to properly develop with a MVC framework and I'm totally comfortable using CodeIgniter to write my app.
The thing is I'm now wondering if its better to write my own MVC framework for this app or use CodeIgniter? My worries are due to the fact that I'm just getting this app written to serve as a prototype and will hand it off to more experienced developers down the road. I'm worried CodeIgniter has limitations that I'm unaware of yet and could hinder further development for me or the next developer(s). I'd imagine its easier to get around issues/limitations of a custom framework than it is of a 3rd party/ready made/stock framework.
Any insight?
There aren't any real limitations to CodeIgniter as most of the core can be extended. I have been using it for years and not found anything I couldn't use it for.
Kohana is a little more fun if you're into PHP5/OOP stuff but the lack of documentation will make learning it quickly rather difficult, especially if you are being paid to produce this.
Use CI, it will speed you up plenty.
I'd would go with CodeIgniter if you're familiar with it (and not writing your own framework from scratch), the app is a prototype, and it's getting handed off to more experienced developers down the line.
CodeIgniter isn't an obscure framework, it's pretty widely used and well documented. If your developers kick up a fuss, then they're probably aren't as experienced as they would like to think they are.
For a prototype I would say definitely use whatever you're familiar with, instead of making the project much bigger than it needs to be. Writing your own framework is a huge challenge, but it's also a really good learning experience. I've written my own suited to my own needs just so that I could learn the language "in the deep end" (and I keep adding to it whenever I use it... maybe someday, when I decide it's "fully featured", I'll release it into the wider world). But you should only do that if you've got the time, and plenty of room for everything to go wrong.
Well, the question is: can you do better than every other MVC PHP framework out there? Reinventing the wheel only costs more time and the focus off your application changes, because you have 2 seperate things to maintain.
I would stick with a proper MVC framework. We use Symfony exclusively for that use. It's a great framework with a lot of features borrowed from other frameworks and other programming languages. However, the list is endlessly for PHP framework. I recommend reading a bit about other frameworks and pick the one which is the most suitable for your needs. It saves you time in the end.
As a developer, I had to go through the same road.
Personally, I chose CodeIgniter as primary tool of my development, mainly because of community support and straightforward MVC. However, CodeIgniter was built by EllisLab, and they are not community driven. If you are looking for something that has more dynamic, community driven, open source MVC framework, I would suggest using Kohana.
Kohana has a good community, and they have some notable contributors. Check it out here
If you are thinking of choosing from different types of frameworks, I would suggest make a list of things you want out of a framework, and do your search based on that.
I'm embarking on a very big exercise to build a CMS in php. It's actually my attempt to learn PHP in a fun (and hardcore) way coming from a Java background. Java is all object oriented so oop is in my blood, but I'm finding that OOP hasn't made it yet to PHP. Most PHP is still being written today the old way without the new concepts.
I'm trying to find an example PHP CMS that's written as object oriented. I hear Xoops is. Any others you know of? or any OOP libraries in general that you know of that could help me in a CMS project.
I would suggest symfony framework as it is well documented and functional framework that helped building many web applications.
http://www.symfony-project.org/
PHP5 is pretty OOP. Look for CMSes and frameworks that only work on PHP5. For example, Kohana
Concrete5 is a pretty complex OOP based CMS. Might be a harsh start but I've learned a lot by working with it.
again, +1 for symfony, but this is a large project and getting to know symfony will consume most of your time, yet if you want to dive in, its documentation is really great.
since you are trying to build your own CMS, get started with easy to grasp frameworks and build upon them. Don't waste your time on everything that has been already done. I recommend you Codeigniter MVC Framework http://codeigniter.com and for CMS, PyroCMS http://pyrocms.com which is built upon codeigniter is cool. Codeigniter is really easy to get along, and documentation is very neat and clean.
Further, if you like to start with a simple php framework, here's what Tyrehall has done, http://github.com/tylerhall/simple-php-framework . This project can act as a base for your CMS
No one seems to have mentioned Kohana the PHP 5 only framework.
Kohana has a pretty active and very helpful community to back it up (#kohana on freenode in particular).
edit: Upon closer inspection I see someone has already mentioned Kohana.
what you will notice is that what is more important to most cms (and framework) developers is MVC pattern implementation. Most MVC implementations in php do in fact use oop practices (some stricter than others)
+1 for symfony, and another I'd like to recommend is Kohana (built on CodeIgniter)
Also have a look at their forums, as both already have a cms or 10 built using these frameworks.
Using these frameworks brings you about 60% there, as a lot of the rudimentary tasks are taken care of.
edit
also remebered this one: fatfree framework it's quite lightweight: http://fatfree.sourceforge.net/
Have a look at Phundament 3.
Phundament 3 is an application foundation built upon a set if independent Yii modules and extensions such as user, rights, yiiext, gtc, ckeditor, jquery-file-upload, p3widgets and p3media.
The combination of p3widgets and p3media provides basic content management system (CMS) features, like dynamic widget creation and file management.
Combined in ckeditor, p3media acts as a ckfinder plugin which gives you the full power of HTML and media files for content creation via p3widgets.
It comes with a very minimalistic setup which integrates perfectly into an Yii web application skeletion and installs with one single command.
as some folks suggested here, you should start with Codeigniter because it's really easy to dive in. Its documentation is very well structured and easy to read. But I think Codeigniter seems to be very old now.
What I really recommend to you is Laravel. There's another Framework you should look into, that's FuelPHP. But for me, Laravel has absolutely changed to way I'm writing my PHP code. It is the best framework I've ever seen in my life. It's so elegant that you will instantly fall in love with.
If Laravel suits you, I recommend you to follow this online course by Jeffrey Way # Tutsplus.com. You will love it!
Good luck :)
Have you seen CakePHP?
http://cakephp.org/
Its a MVC framework for PHP. Its pretty robust and can be used in a fully object oriented manner.
I have been using qcodo/qcubed for developing CMS based sites. I had been successful in developing and maintaining fairly complex sites using these frameworks.
Things get done so quick and easy using qcubed that i never felt the need to look for another framework like zend, symfony ....
I am wondering if you guys have tried or have been using them.
I have not tried zend, symfony, kohana or other frameworks of discusson on reddit.
What is your opinion, is qcubed as good as these frameworks? If not can you please suggest some of the features that you find useful in other frameworks and are missing from qcubed.
thanks
I've heard good things about qcodo. I took a quick look at the code and I find it somewhat bloated, however that doesn't mean it's a bad framework.
CakePHP is also bloated, I don't have any experience with it but I don't find it sexy enough. Lithium on the other hand seems like another story.
Zend Framework, while huge, has an impressible amount of libraries that can be used in standalone.
Regarding CodeIgniter and it's fork Kohana, both are extremely fast and lightweight - they provide a small learning curve that allows developers to get things done quickly.
One other framework that is probably less known is Akelos, I've never used it but it seems a pleasure to work with after watching the screencasts. It's also extremely powerful.
why don't you try for Cake PHP? because most of the features of MVC has been perfectly covered in Cake.
this is just my suggestion...
i am looking for a new php(5) framework it must be lightweight(x<500kb), oop, have orm, active record built in, simple to learn, fast to use, active community and dev.
I need it for small, personal app development.
My php skills are quite low and i have .net background. I have previously used LightVc+cough and codeIgnitor php frameworks.
There are so-many frameworks there and it is quite hard to find the best.
I have checked the other threads here but they are to old to consider sustainable.
Thanks for your time.
I think you dig out the http://www.phpframeworks.com/. It has details about each and every accepted framework.
Code Igniter is very popular and also supports PHP4: http://codeigniter.com/
Unlike .NET and miscellaneous other programming languages, you really don't need a framework to write a PHP application. In fact, I'd advise against it. Learn the language, not a framework.
For someone with low PHP skills I'd say codeigniter although it doesn't have ORM built-in (it has a sort of lightweight active record class), but there are tutorials on how to use Doctrine (a good PHP ORM solution) with it.
However if you want a PHP5 only framework (as in written to take full advantage of PHP5) then I'd suggest looking at Kohana (a PHP5 only fork of codeigniter), Yii or Zend framework.
I am going to be builiding a site like ebay - with all the features of ebay. Please note my payment method is limited to paypal.
What would be the best PHP framework
to use to build this quickly,
efficiently and with the smallest
learning curve?
I have narrowed down to CodeIgniter as the major contender for this project - but having looked through the docs I couldn't find a library or class that I can use with paypal - is the same for all frameworks- surley not?
Zend framework - I considered this but although its documentation is very good, hardly any video tutorials - other frameworks seem to have lots of these especially with normal developers creating screencasts - where is the Zend community!
CakePHP - Having read the stackoverflow threads, I gathered this is a slow framework, giving developers little control as it seems to be a CMS backbone rather than a framework - agree? It was also said cakePHP and Zend have a steeper learning curve than CodeIgnitor.
I have start my short-listing again and I would appreciate any help with this.
Thanks all
You'll very likely find CodeIgniter to have the lowest learning curve. Regardless of the framework you choose, you'll have to pick up where the framework leaves off, and that is going to mean a significant amount of work on your part (if you truly want to implement all the features of ebay). There seems to be a PayPal lib in the CodeIgniter Wiki. Looks like it would be a great place to start.
Cake is not a CMS backbone, it's a framework like the others. It's just more opinionated, i.e. geared towards CRUD operations (create, read, update, delete, what you typically do in a CMS). If your application is focused on CRUD, Cake will give your development a kickstart; you can get a complete admin interface for your database tables up in, literally, minutes.
Thanks to that it may be a little slower, especially compared to "loose" frameworks like Zend, but in the end it won't matter much. You can do anything with any of these frameworks and any of these frameworks can be optimized to run as fast as possible. Try to get a simple prototype app up and running in all of them and choose the one that seems most comfortable to you.
I'd really recommend Codeigniter for speed. I've made a few things with it and it was great.
If you need some help learning Codeigniter Nettuts has been doing some really good screencasts
In the end, it won't matter. Your code for database and presentation will trump any 'problems' your framework has. The frameworks you listed are awefully similar. You'll be more or less stuck with which you pick, so pick one and learn all you can.
If you're going with codeigniter (note, maybe take a look at Kohana too, the php5 fork of CI), you can always use libs out of Zend if theres something that fits your needs.