tags:

views:

58

answers:

3

I'm looking to improve my PHP skills (I've only ever altered code, never written my own stuff) -- and I'd like to try building a CMS for myself to learn.

Can anyone point me to some basic resources/tutorials about where to start? (Or tell me this is a silly idea? :) )

+1  A: 

Not a silly idea, it's good to try to develop your own skills.

One key area is database normalisation. As you become more experienced you will start to understand the importance of this.

The database is the foundation for every feature that will be built on it. Unless it is designed properly, it's going to become a sticky web that's quickly going to become more and more unmanageable.

Keep your database fully normalised, and your code as modular as possible, and this will enable you to improve/add/remove sections at will.

Tom Gullen
That's a great intro, thanks!
christina
+2  A: 

Depends on how you like to learn things. Books work for some people. Online tuts work better for others. one-on-one works best for still others. Most people eventually going directly to the manual at php.net though.

Crayon Violent
I'd also like to throw out there that building a CMS from the ground up is a pretty big task. I would suggest starting with the basics, pick a smaller program to learn syntax and principle on. Something related, but not as big, like a simple guestbook or something.
Crayon Violent
php.net is definitely a good resource for PHP in general, but I think the "designing a CMS" aspect is the real problem.
Brendan Long
I learn from doing mostly, learning from online stuff usually and then breaking/fixing already built things to see how they work. I've used php.net a bit -- but I'm looking more for something like structural advice/norms to work from, basically where to start the process... does that make sense?
christina
A: 

I could never find a decent article that could break down how to build an extensible, well architected cms. I was also looking for quite some time until I decided to just jump in and sweat some blood.

It was by all means the best decision I've ever made. If one cannot build an awesome, functionally rich cms, forum, social networking and e-commerce site from scratch (the most common requests by customers), one cannnot call himself (herself) a web developer.

Reinventing the wheel every single day and night until you are comfortable with your craft is the only way period. No one can learn to create software by reading books or watching videos. The brain simply does not work that way. Hands on is the only way to create long term memory that will allow you to think critically and to synthesize the information you have retained.

Being able to write code is only 10% percent of a job well done. The rest is critical thinking (problem solving) and research.

  • What worked for me personally is to find some good open source cms packages that I could download, study and pick apart until I saw what the rationale behind it was, and how the pieces fit together. At this stage I realized that there was no strict standard and that each cms was a blueprint/fingerprint or direct reflection of the person(s) mind who created it. Problem solving is as unique to the individual as their fingerprint (or brain neural-network print(BNNP)).
  • You must think about every little functionality that you wish incorporated and the best architectural method that will allow extensibility.
  • Because a decent cms is composed of thousands of functions / instructions, you can't formulate these or keep these in your head. Therefore you have two choices:
  • 1.) Trial and error aka do it as one idea begets another, which requires a great amount of revision, or.. 2.) Create a detailed flow-map.

The later makes more sense but it is infinitely more difficult to achieve unless it is only a general outline.

The first one makes little sense to most people but it is infinitely more powerful simply because of the amount of thinking and coding involved, which effectively reinforces the ideas thus allowing you to create long term memory through contextual understanding (seeing the bigger picture).

Practice makes perfect! Even if you do your best to study other peoples work, your first cms will only be good until you start the next one. Everything can be improved upon no matter how fantastic it seems. It is simply the nature of things.

anonymous