Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<blockquote> <p><sub>Links, that contain PHP-only materials, are marked with <kbd>php</kbd> for easier identification.</sub> </p> </blockquote> <p>You cannot even begin to delve into MVC before you have comprehensive understanding of OOP. That include OOP practices <em>(<a href="http://en.wikipedia.org/wiki/Dependency_injection">dependency injection</a>, <a href="http://en.wikipedia.org/wiki/Unit_testing">unit testing</a>, <a href="https://en.wikipedia.org/wiki/Code_refactoring">refactoring</a>)</em> principles <em>(<a href="http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29">SOLID</a>, <a href="https://en.wikipedia.org/wiki/Separation_of_concerns">SoC</a>, <a href="http://en.wikipedia.org/wiki/Command%E2%80%93query_separation">CQS</a>, <a href="http://c2.com/cgi/wiki?LawOfDemeter">LoD</a>)</em> and common patterns (and no, singleton is not an object-oriented pattern).</p> <p>MVC is an advanced architectural design pattern, which requires solid understanding. It is <strong>not meant for beginners</strong> or for tiny "hello world" applications. One uses MVC to add additional constraints to the codebase, when simple adherence to OOP practices becomes too loose to control the codebase.</p> <p>The best I can suggest for you would be to begin by expanding you knowledge regarding object oriented code:</p> <ul> <li><a href="https://vimeo.com/13439458">Clean Code I: Arguments</a></li> <li><a href="https://vimeo.com/12643301">Clean Code III: Functions</a></li> </ul> <p>The two lectures above should cover the basics. And then move on to:</p> <ul> <li><a href="https://www.youtube.com/watch?v=4F72VULWFvc">Inheritance, Polymorphism, &amp; Testing</a></li> <li><a href="https://www.youtube.com/watch?v=wEhu57pih5w">Unit Testing</a></li> <li><a href="https://www.youtube.com/watch?v=-FRm3VPhseI">Global State and Singletons</a></li> <li><a href="https://www.youtube.com/watch?v=RlfLCWKxHJ0">Don't Look For Things!</a></li> </ul> <p>When you understand all that was explain in this series, you can expand on:</p> <ul> <li><a href="https://www.youtube.com/watch?v=KHBrDWIKW8Q">Don't be STUPID, Grasp SOLID!</a> <sup><kbd>php</kbd></sup></li> <li><a href="http://www.infoq.com/presentations/principles-agile-oo-design">The Principles of Agile Design</a></li> <li><a href="https://vimeo.com/21173483">Advanced OO Patterns</a> <sup>(<a href="http://qafoo.com/talks/11_02_phpuk_advanced_oo_patterns.pdf">slides</a>)</sup> <sup><kbd>php</kbd></sup></li> <li><a href="https://vimeo.com/21145583">Beyond Frameworks</a> <sup>(<a href="http://www.slideshare.net/stuartherbert/beyond-frameworks">slides</a>)</sup> <sup><kbd>php</kbd></sup></li> <li><a href="https://vimeo.com/20610390">Agility and Quality</a> <sup><kbd>php</kbd></sup></li> <li><a href="https://www.youtube.com/watch?v=QKWn8SDYs5g">Beyond Design Patterns</a> <sup><kbd>php</kbd></sup></li> </ul> <p>Also, I would strongly recommend for you to read (in this order):</p> <ul> <li><a href="http://rads.stackoverflow.com/amzn/click/0321247140">Design Patterns Explained</a></li> <li><a href="http://martinfowler.com/eaaDev/uiArchs.html">GUI Architectures</a></li> <li><a href="http://www.martinfowler.com/articles/injection.html">Inversion of Control Containers and the Dependency Injection pattern</a></li> <li><a href="http://rads.stackoverflow.com/amzn/click/0321127420">Patterns of Enterprise Application Architecture</a> </li> <li><a href="http://rads.stackoverflow.com/amzn/click/0321125215">Domain-Driven Design: Tackling Complexity in the Heart of Software</a></li> </ul> <blockquote> <p><sub><strong>P.S.:</strong> you might also take a look at this book (cautiously, because it has issues): <a href="http://rads.stackoverflow.com/amzn/click/0973589825">Guide to PHP Design Patterns</a> <kbd>php</kbd></sub></p> </blockquote>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload