Keep in mind, I know PHP as I learned it for this specific project. Also, I thought about just using magento, but as I went through it, I realized I would have to learn their framework. I am very opposed to putting more time into learning a framework rather than continue expanding my PHP knowledge. I took a computer science course in which rather than make us use already made objects and functions, we had to create those as to learn how they actually worked. That was an amazing learning experience. I know that their is a lot of work involved in doing this, due mainly to the fact that others have done similar things, but my main two reasons for this are:

  1. I would only build what I need, no extra features I do not.
  2. I would have specific needs, stuff that I would need to code anyways.

The only thing I would need would be simple e-commerce features like user authentication, products pages(user, admin), and shopping cart, and obviously a database. Everything else I need would be tailored to the specific needs of the site and the way I will be implementing it. If this helps in giving a picture of where I am at, what would the best recommendation be from professionals. Thank you.

  • " I am very opposed to putting more time into learning a framework rather than continue expanding my PHP knowledge. "? How are these two exclusive choices? Isn't Magento a PHP-based framework?
    – S.Lott
    Commented Jan 17, 2012 at 3:38
  • 1
    Thats the point, when I looked at the code, I realized it I had to learn their rules rather than just the languages general rules.
    – Andy
    Commented Jan 17, 2012 at 3:43
  • Again. How are these two exclusive choices? How can learning one prevent you from learning the other?
    – S.Lott
    Commented Jan 17, 2012 at 3:47
  • There are many ways to do one thing. If I do not understand one thing in the framework, or I learned things differently, for example the OOP way rather than procedural or vice-versa, learning the other side of things would take even longer. But I see your point.
    – Andy
    Commented Jan 17, 2012 at 3:50
  • 1
    learn them, so you are not blindly following a pattern... Commented Jan 17, 2012 at 3:54

4 Answers 4


If trying to learn a new technology, I would recommend not using a framework. You learn more about what you are building and why when you build without a framework. If building a production enterprise application, use a framework, its proven, testable, documented and likely has a large community who support it.

Thinks roses and thorns, everything is a tradeoff, nothing is free.

  • 6
    So, you'd suggest dealing with plumbing rather than concentrating on deliverables, even with the OP's experience (or lack thereof) with the language? Nothing against the OP, but if he just learned the language for this specific project, there's a TON that he could learn from frameworks as well as a TON of bugs and vulnerabilities that could be avoided by using a written and battle tested framework. Commented Jan 17, 2012 at 3:42
  • I dont disagree with what you are saying, its why I said "all factors equal"....and if they are, then learn to program before you use the framework... Commented Jan 17, 2012 at 3:45
  • 1
    My experience lies in client side programming, if my programming abilities are at question. I am very confident in that aspect, but the web does have its dangers, more so than client side, so this is why I ask the question.
    – Andy
    Commented Jan 17, 2012 at 3:48
  • 2
    I totally agree on the "You learn much more..." part. But about an e-commerce web site, writing everything from scratch is a very bad idea (yes I tried).
    – Drasill
    Commented Jan 17, 2012 at 9:00


Why worry about the plumbing when you don't have to? If you need to improve the performance after profiling and determining that certain parts of the framework are in fact the bottleneck, then improve the framework in question and contribute back to the community.

People who have written those frameworks in question have much more expertise in the language/technology than you do (given your explanation). You can learn much from using (and stepping through) framework code.

  • Thank you for the advice. Which framework do you recommend for flexibility and easy addition of code?
    – Andy
    Commented Jan 17, 2012 at 3:41
  • I've used CodeIgniter and Yii in the past. Yii has quite a bit more of a learning curve than CI (and not quite as bit of a community), but (imho) was more enjoyable to work with. CI can get you up and running in very little time. Personally I'd recommend playing with both if you have the time and deciding for yourself. Commented Jan 17, 2012 at 3:44
  • Thank you, so I did some quick research, code igniter seems like the best option for me if I choose to look into it much deeper, but what about zend of cakephp? Anything you know about those?
    – Andy
    Commented Jan 17, 2012 at 3:53
  • I haven't used either personally. Zend is (AFAIK) used more in enterprise level applications (although I believe this is more due to legacy reasons than anything else really). I've known people you have used CakePHP and who have enjoyed using it. Another one that you may want to look into is Kohana. I've known a few companies who have sworn by that for their app development (although one of the two moved to Yii). Commented Jan 17, 2012 at 7:12
  • When I did my own research (before moving to Python), I found that Yii had the best ab tests (mind you, these were trivial tests). CI had decent results and it appealed to me because I was up and running in no time. However, at the time it supported both PHP 4 and 5 so there was extra overhead. AFAIK, this is no longer the case so it the old ab tests that I checked out would no longer be relevant. Commented Jan 17, 2012 at 7:14

If you want to put the shop on the web use a framework!

A battle proven framework is the only way I would consider for a critical system like a shop. You have to tackle so many areas that are new to you, that you will eventually screw up.

  • Security
  • Scalability
  • Handling payments
  • Handling user data
  • Invoices

These things are hard and have serious consequences if they break.

  • Thank you, good points, I have been wondering how scalability would be handled. All other aspects you mention I have already done research in and have began learning them. I have been putting careful planning into the security issues though, for obvious reasons. But it gives me things to think about!
    – Andy
    Commented Jan 17, 2012 at 16:03

Use a framework, as a rule it make no sense to reinvent the wheel. It is almost certain what you will develop is a cut down buggy version of something thats already avalible for free. It will have a user community of one, making it a lonely life (who will support you when things are not doing what you think they should), and limited life span once you loose interest in the project.

The only reason I consider not using a framework acceptable is you are doing for learning and you have a back ground in computer science, not computer engineering.

It will not help job prospects putting "roled my own" on a resume.

In response to your specific concerns,

1) A good framework does not make you add features you don't want to.

2) Using a feamework allows you to focus on those "specific needs" and frees you from the tasks that everyone needs, and have no added value.

Does an carpenter build a house with a hand saw and hammer? Although he needs to know how to use these, and does for specific problems, he reaches for the power saw and nail gun most of the time, you should too.

  • I guess in the end if I do decide to go with the framework, building it from scratch would not have been a bad experience. I am currently a senior for computer science, so i have training in the data structures that usually go into frameworks. You are right, using what is already their is so much easier, and I would rather use those.
    – Andy
    Commented Jan 17, 2012 at 16:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.