I've been doing a lot of work with CakePHP lately and it has been amazingly satisfying developing in a framework that encourages great coding practices. More on CakePHP, specifically, later. Right now, I'd like to present some things I've learned about the architecture that CakePHP is built on. I'm talking about the Model-View-Controller (MVC) architecture of course.
I'm hoping most of you reading know already know a thing or two about MVC but if you don't, here is a quick overview from wikipedia.
Model-view-controller (MVC) is an architectural pattern used in software engineering. Successful use of the pattern isolates business logic from user interface considerations, resulting in an application where it is easier to modify either the visual appearance of the application or the underlying business rules without affecting the other. In MVC, the model represents the information (the data) of the application and the business rules used to manipulate the data; the view corresponds to elements of the user interface such as text, checkbox items, and so forth; and the controller manages details involving the communication to the model of user actions such as keystrokes and mouse movements.



PHP's greatest strength is also its greatest weakness. Flexibility.
There are an infinite number of ways to perform the same task which PHP
will happily do without so much as a peep as to how poor the code
really is. Sadly, most developers endure a trial by fire where they
only learn from their mistakes after it's too late.
Bugs are an inevitable part of any development project that most
people loath or at least generally dislike. If you take the time to
examine this phase of a project you will find that it's not the bugs
that really irk you, but the way they are presented, described, and
handled.
I finally got around to installing xdebug on my development
environment and have decided it is the best thing since sliced bread.Installation was a breeze and the information it provides when something has gone wrong is incredibly helpful during debugging. What I didn't know, and hope to help others by documenting it here, was the amount of configuration options Xdebug has. The base install has some irritating limitations that are easily addressed with a few simple lines in the php.ini file.