When I was deciding how to go about learning to design PHP web applications, it made sense to sort of shoot toward the middle and go with Zend Framework so that I could be closer to the lower level, but I would be able to get down to business fairly easily, too, while learning about design patterns, etc.

That seemed to work out pretty well, but now I'm wondering if I wouldn't have learned more about design from a more top-down approach, like creating a drupal site and deconstructing it.

I realize that the degree of topness vs. bottomness in this context is pretty negligible in the spectrum of all programming experiences, but I think it matters very much where you start, especially at the very beginning, because your world is small; it's home base, and how you develop your personality there "at home" can determine how you approach other problems in the future--I believe people tend to try to repeat their successes, which often means adopting a preference for what's familiar to them.

I didn't want to "learn myself into a corner," so to speak, so I tried to aim for a level that would prepare me for the greatest amount of other experiences. LAMP with ZF seemed like a well-rounded, holistic choice, because I'd be learning about database design, patterns, web app development, server configuration, and a C-based programming language all at once.

Okay, great, but I haven't really progressed as far as I had hoped I would, honestly. And now I'm starting to wonder if I've done myself a disservice for wanting to start nearer to the bottom vs. learning to produce as much as possible right away. My instincts at the time were that, "sure, a CMS will get you up and running, producing stuff right away, but you'll eventually hit a wall and need to learn the lower-level stuff anyway, and you'll probably hit it sooner than later so you might as well start there. Don't eat dessert first."

But now I'm thinking "what would have stopped me from digging into the gears of a CMS?" Maybe I would have learned more from seeing a more complete implementation and deconstructing it rather than reinventing the wheel. Or, I could be exactly where I should be having only started in December?

And I just don't know the answer. I want to start a new project (redoing my website--I'm actually a composer (of music)). I know the basics of Zend Framework, and I'm fairly sure I could code a simple CMS for myself for my purposes, but would I learn more from deconstructing an out of the box CMS like drupal?


2 Answers 2


In my opinion you can learn better about design pattern and, in general, software engineering reading some good books. Of course is cool to deconstruct great projects like Drupal, Joomla and so on but before do this, you have to have good theoretical knowledge.

For example, the best book about desing pattern (I really suggest to read it) is this: http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612

  • Learn Design Patterns PHP is a good choice to know more about structure code of Framework or other OpenSource Platform. Apr 28, 2014 at 10:14

For me I started getting in to programming when I was a freshmen in highschool after being sent off to bording school and having nothing to do with my free time. I bought a domain name and some godaddy hosting And started making a website. At first It was HTML static pages and realised that this would not work I then moved on to hosted forums but I was not really able to do anything with it. I moved on to working with PHPBB. I installed a blank copy and followed instuctions on how to install add-ons. As everyone knows back in the day adding addon-s was opening the code and copying and pasteing and replacing lines of code. You learn your own method of commenting out lines insted of deleting it. And when you have to plugins that need the same function you have to learn how to merge them together into one working plugin. In the end the website was small but it was my baby i had maybe 20 people that used the website all the time we were not concered about making the website big but just having fun and I was the only person working on it. As time went on i learned how to connect my own outside custom code to the user system And all sorts of other things.

The point of the story is not really about what tool you use to learn how to buld an application but how deep you go into the application. In the end the app that you make will need to be programmed and you are going to need to know how the framework is working from top-down and bottom-up because you will need to be able to find erros. My final advice is dont be afrid to make your own framework and make it meet your needs and always learn about secirty and learn how the other guys keep there stuff nice and tight.