Quick search:

Learn Object Oriented design from the bottom up

The focus of phpPeanuts is to help you get started in practical application development, and then, to learn by doing. The design documentation is limited to some essential principles (object orientation, MVC, user interface compostion), class diagrams and the 'what is' section of the website. If you need theory, there are good books on system development methods, design patterns, algotithms, refactoring, test driven development, etc. Read them! But they will not do much good if you do not find ways to apply the theories. You need ways to make choices between the many design options. You need experience with how bad desing bites you when you have to maintain and extend real life software to base your design decisions on.

When you build a substantial application and refactor relentlessly (improve its design by the elimination of repetitive code and patterns) you will probably end up with a framework. Therefore a well designed framework offers a practice oriented aproach to learning more about OOP and OOD. With phpPeanuts you can start off with converting a simple application design allmost 1 to a domain model in php. PhpPeanuts will take care of stroring and retrieving your objects to/from the database and give you a default user interface. From then on building an application in phpPeanuts is essentially a matter of selectively extending and overriding the default behavior of the framework and extending and refactoring. By constantly looking at pphPeanuts from the perspective of extension and specialization we hope you develop a habit of looking at your own code too with the question: how can i make it extendable and flexible?

See it like a city: It is one thing to read a traveling guide and seem some tourist attractions, but really living there is a different matter. By doing so you get to know it from the bottom up. PhpPeanuts essentally offers you a map, a starters guide with some examples, some practical adivice and off you go. It is immanent that there will be times that you will feel lost in the big city. To help you with that there are the Hypercode Browsers on the website will help you to learn about the framework by allowing you to searching for polymorphisms, with wildcards and scope control. Yes, you will have to read code. Much of the details are "undocumented". But the code consists of small methods with explanatory names. With the hypercode browsers you can move around through the code following method calls in both directions, and quickly find inherited and overiding methods.

Nowadays most developers work in teams, on applications that have a history, and therefore a legacy. Learning to find your way in other peoples code is probably just as usefull as learning design principles. So don't get irritated if you have to dig into the frameworks code to find out how to get something done. See it as a goldmine you are exploring. Even if you have to dig deep, you don't have to dig into rock (i mean: things could be worse). 

Of course you will also run into limitations of phpPeanuts. Some of them are introduced deliberately to keep te framework simple and learnable. Others are only there becuase it proved too hard to figure out how to build something better at the time it was being built. Software is never finished. Please inform us if you find design limitations that really limit the ways in which you can override and extend the framework!