Where to start, and why?
July 29, 2011 8:38 AM   Subscribe

I want to start a serious and large scale (for me, anyway) web project. Could you help me decide between CodeIgnitor and Symfony, as well as figure out tools/scripts/libraries/methods for some of the goals I have for the site?

For various irrational reasons, those two are the frameworks I'm interested in. Assume that I've considered and discarded Rails, Django, CakePHP, Zend, and anything else you can think of.

The site will, when fully functional, allow people to sign up in an automated way (for free and paid levels of access), log into the site, and access different sets of features depending on whether or not they are a paid subscriber. Payment to change feature access will be automated (not requiring any human interaction except when things go wron/support tickets), probably via paypal. I'd ultimately like to have various paid options and features independent of each other, but can start out with a simple binary paid/free access.

The primary purpose of the site will be to save and keep track of a certain kind of information provided by the user (generally plain text), and then transform that information into specifically formatted doc files, pdf files, and rtf files on demand for the user to print or to be e-mailed by the site according to the user's specifications or the user's selection from a list of options.

Margins, line spacing, font, page headers, page numbering, text alignment and weight, first-line indentation and block quotes all have to be generated accurately for each of those formats, but those are pretty standard things. I do not anticipate having to do anything fancy.

I would like to start as rapidly as possible with limited features, and then expand over time to slowly create the full experience.

For pdf generation, I'm considering using pdflib. It's free, right? Any better alternatives?

For doc generation: use html and name as .doc? Any better alternatives?

For rtf generation: create template rtf files that get read into PHP and then replace markers with the user's information. Any better alternatives?

Is there any reason, for this type of thing, to choose CodeIgnitor or Symfony? In general, performance should not be a deciding issue. (See slide 19 for this philosophy represented in graph form by somene else.)

I specifically chose those two frameworks because they are not-alike: Symfony makes magic happen, and CodeIgnitor is hands off. Both are new to me. I have no experience with a MVC PHP framework. I do not mind a learning curve.

Please show your work! I kind of want some philosophy and/or concrete advantages here, not just a one-line answer.
posted by jsturgill to Computers & Internet (5 answers total) 4 users marked this as a favorite
I've used both frameworks and for a new project I would use symfony. The learning curve is higher, but the all around level of quality in the framework is higher and its developer ecosystem attracts a great pool of talent. Just reading the source code and examples made me a smarter developer. The latest 2.0 version of Symfony has a lot less "magic" about it, but the code generators are still available to make it easy to mock up a CRUD application in minutes once you are familiar with how it works.

As to the other part of your question, I would look into dompdf for generating PDF documents. If you can write well structured HTML then it can produce quality PDF documents. I've used (and still use) pdflib, but it is much more complicated and the licensing can be pretty expensive.

Also, take a look at the symfony fosuserbundle (or something called that) because it lets you easily build the user authentication & sign up routines. It will save you a lot of time.
posted by dgran at 10:18 AM on July 29, 2011

3'rd recommendation for Symfony for a project of that size. It is a very nice framework. While most of my efforts have moved to Django, I enjoyed my earlier days of working with it. It really does a fantastic job of mirroring the other language frameworks.

On top of that, Symfony 2 was just released.
posted by purephase at 4:05 PM on July 29, 2011

Try pyMailMergeService for document generation, it uses a headless openoffice instance and allows you to output in any format that openoffice is capable of creating.

I'm using it on a few projects now with great results and it is under steady development.
posted by gfroese at 10:45 AM on July 31, 2011

Honestly... in the end, I'm not sure it matters which one you choose -- the important thing, at least with this initial project, is just to get a grip on programming within a framework and flex your OO PHP skillz...
posted by ph00dz at 6:21 PM on July 31, 2011

Response by poster: Symfony it is. Reading the documentation for Symfony's already taught me quite a bit, and I haven't even started programming anything yet.

Gfroese, thanks for the pyMailMergeService recommendation.
posted by jsturgill at 10:05 AM on August 1, 2011

« Older 11 inches - big enough?   |   Low odds of winning, but a bigger payout Newer »
This thread is closed to new comments.