{"id":53373,"url":"https://github.com/marcelgsantos/learning-oop-in-php","name":"learning-oop-in-php","description":"A collection of resources to learn object-oriented programming and related concepts for PHP developers.","projects_count":234,"last_synced_at":"2026-06-02T18:00:26.164Z","repository":{"id":26489309,"uuid":"29941462","full_name":"marcelgsantos/learning-oop-in-php","owner":"marcelgsantos","description":"A collection of resources to learn object-oriented programming and related concepts for PHP developers.","archived":false,"fork":false,"pushed_at":"2020-12-26T15:57:10.000Z","size":84,"stargazers_count":2504,"open_issues_count":8,"forks_count":426,"subscribers_count":250,"default_branch":"master","last_synced_at":"2026-05-17T06:02:04.338Z","etag":null,"topics":["awesome-list","design-patterns","ood","oop","php","refactoring"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcelgsantos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-27T23:57:02.000Z","updated_at":"2026-05-13T15:04:32.000Z","dependencies_parsed_at":"2022-07-26T16:02:13.095Z","dependency_job_id":null,"html_url":"https://github.com/marcelgsantos/learning-oop-in-php","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/marcelgsantos/learning-oop-in-php","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelgsantos%2Flearning-oop-in-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelgsantos%2Flearning-oop-in-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelgsantos%2Flearning-oop-in-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelgsantos%2Flearning-oop-in-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcelgsantos","download_url":"https://codeload.github.com/marcelgsantos/learning-oop-in-php/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcelgsantos%2Flearning-oop-in-php/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33833277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-15T18:18:04.378Z","updated_at":"2026-06-02T18:00:26.164Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Tutorials","People","Slides","Books"],"sub_categories":["Miscellaneous","OOP Advanced","Object-Oriented Design","Refactoring","OOP Fundamentals","Design Patterns","Architecture"],"readme":"# Learning OOP in PHP\nA collection of resources to learn object-oriented programming and related concepts for PHP developers.\nPlease see [CONTRIBUTING](CONTRIBUTING.md) for details and contribute. ;)\n\n- [Tutorials](#tutorials)\n    - [OOP Fundamentals](#oop-fundamentals)\n    - [OOP Advanced](#oop-advanced)\n    - [Object Oriented Design](#object-oriented-design)\n    - [Design Patterns](#design-patterns)\n    - [Refactoring](#refactoring)\n    - [Architecture](#architecture)\n    - [Miscellaneous](#miscellaneous)\n- [Videos](#videos)\n- [Slides](#slides)\n- [Courses](#courses)\n- [Books](#books)\n- [Some Questions](#some-questions)\n\n## Tutorials\n\n### OOP Fundamentals\n*Object-oriented programming fundamentals tutorials.*\n\n* [Object Introduction (\u0026#9658;)](https://www.youtube.com/watch?v=BXyUuMWoQ60) - An introduction about objects and related concepts.\n* [Intro To Object Associations (\u0026#9658;)](https://www.youtube.com/watch?v=gTQgkkUo1Ro) - An introduction about object associations.\n* [Object-Oriented Programming (\u0026#9658;)](https://www.youtube.com/watch?v=lbXsrHGhBAU) - An introduction about object-oriented programming in general.\n* [Getting Started with OOP in PHP (\u0026#9658;)](https://www.youtube.com/watch?v=qlF1MuHlZ4Q) - Object-oriented programming introduction in PHP.\n* [Beginning OOP in PHP (\u0026#9658;)](https://www.youtube.com/watch?v=oroX19Ie6nw) - Another object-oriented programming introduction in PHP.\n* [Intermediate OOP in PHP (\u0026#9658;)](https://www.youtube.com/watch?v=KHkk6Lf-_xQ) - Intermediate concepts about object-oriented programming in PHP.\n* [PHP OOP Tutorials (\u0026#9658;)](https://www.youtube.com/playlist?list=PL75B9D91CD69ED950) - Tutorials about OOP, Design Patterns and MVC.\n* [PHP Object Oriented Programming Fundamentals (\u0026#9658;$)](https://code.tutsplus.com/courses/php-object-oriented-programming-fundamentals) - An introduction course about object-oriented programming in PHP.\n* [OOP Official PHP Reference](http://php.net/manual/en/language.oop5.php) - PHP official reference about object-oriented programming.\n* [Object-Oriented PHP for Beginners](https://code.tutsplus.com/tutorials/object-oriented-php-for-beginners--net-12762) - A tutorial about OOP in PHP for beginners.\n* [Introduction to OOP Concepts and More](http://www.codeproject.com/Articles/22769/Introduction-to-Object-Oriented-Programming-Concep) - A tutorial about OOP and an introduction to UML and Design Patterns.\n* [From Procedural to Object Oriented PHP](https://code.tutsplus.com/tutorials/from-procedural-to-object-oriented-php--net-32853) - A tutorial from procedural to object-oriented programming in PHP.\n* [OOP vs Procedural Code](http://blog.ircmaxell.com/2012/07/oop-vs-procedural-code.html) - Difference between OOP and procedural code.\n\n### OOP Advanced\n*Object-oriented programming advanced tutorials.*\n\n* [What Are Abstract Classes?](http://culttt.com/2014/03/26/abstract-classes/) - A tutorial explaining abstract classes in PHP.\n* [Abstract Classes and Interfaces (\u0026#9658;)](https://www.youtube.com/watch?v=AU07jJc_qMQ) - Introduction about abstract classes and interfaces.\n* [When should I code to an Interface?](http://culttt.com/2014/04/02/code-interface/) - A tutorial explaining what is and when to use interfaces in PHP.\n* [Understanding and Applying Polymorphism in PHP](https://code.tutsplus.com/tutorials/understanding-and-applying-polymorphism-in-php--net-14362) - A tutorial explaining about abstract classes, interfaces and polymorphism in PHP.\n* [Inheritance and Polymorphism Concepts (\u0026#9658;)](https://www.youtube.com/watch?v=A8Ztfuq96t4) - An introduction about inheritance and polymorphism.\n* [Beyond Inheritance](http://blog.ircmaxell.com/2013/11/beyond-inheritance.html) - A tutorial explaining what is inheritance and its types.\n* [The Clean Code Talks - Inheritance, Polymorphism, \u0026 Testing (\u0026#9658;)](https://www.youtube.com/watch?v=4F72VULWFvc) - A tutorial about polymorphism and how it affects testing.\n* [PHP Namespaces Explained](http://daylerees.com/php-namespaces-explained) - A tutorial explaining how namespaces works in PHP.\n* [PHP Namespaces](http://www.sitepoint.com/php-namespaces/) - A tutorial explaining what is and how namespaces works in PHP.\n* [PHP Namespaces in 120 Seconds Tutorial (\u0026#9658;)](http://knpuniversity.com/screencast/php-namespaces-in-120-seconds) - A 120 seconds long tutorial explaining what is and how to use namespaces in PHP.\n* [PSR-Huh?](https://code.tutsplus.com/tutorials/psr-huh--net-29314) - An introduction about PSR standards.\n* [Autoloading in PHP and the PSR-0 Standard](http://www.sitepoint.com/autoloading-and-the-psr-0-standard/) - An introduction about what is autoloading in PHP and the PSR-0 standard.\n* [Battle of the Autoloaders: PSR-0 vs. PSR-4](http://www.sitepoint.com/battle-autoloaders-psr-0-vs-psr-4/) - A tutorial explaining the difference between PSR-0 and PSR-4 autoloader standards.\n* [PSR-4 Autoloading (\u0026#9658;$)](https://laracasts.com/lessons/psr-4-autoloading) - A tutorial explaining PSR-4 autoloader standard.\n* [How Static Works in PHP (\u0026#9658;)](https://www.youtube.com/watch?v=hbbdyyN9MRU) - An introduction on how static members work in PHP.\n* [When to Use Static Methods](http://verraes.net/2014/06/when-to-use-static-methods-in-php/) - A tutorial explaining when to use static methods in PHP.\n* [PHP Exceptions](https://code.tutsplus.com/tutorials/the-ins-and-outs-of-php-exceptions--net-22274) - An introduction about exceptions in PHP.\n* [When should you use an Exception?](http://culttt.com/2014/04/09/use-exception/) - A tutorial explaining when to use exceptions in PHP.\n* [Error Handling in PHP](http://www.sitepoint.com/error-handling-in-php/) - An introduction about error handling in PHP and exceptions.\n* [What are PHP Magic Methods?](http://culttt.com/2014/04/16/php-magic-methods/) - A tutorial explaining what is magic methods and examples on how to use them in PHP.\n* [Magic Methods and Predefined Constants in PHP](http://www.sitepoint.com/magic-methods-and-predefined-constants-in-php/) - A tutorial about magic methods and predefined constants in PHP.\n* [What are PHP Traits?](http://culttt.com/2014/06/25/php-traits/) - A tutorial explaining what is and how to use traits in PHP.\n* [Using Traits in PHP 5.4](http://www.sitepoint.com/using-traits-in-php-5-4/) - Another tutorial explaining what is and how to use traits in PHP.\n* [The PHP Reflection API (\u0026#9658;)](https://www.youtube.com/playlist?list=PLfdtiltiRHWG0__5Jb1HDaDgt2PeYjvU6) - A tutorial explaining the PHP Reflection API.\n* [What is Reflection in PHP?](http://culttt.com/2014/07/02/reflection-php/) - A tutorial explaining what is, when to use and some samples about reflection in PHP.\n* [Reflection in PHP](https://code.tutsplus.com/tutorials/reflection-in-php--net-31408) - Another tutorial about reflection in PHP.\n* [UML 2.0 Tutorial (\u0026#9658;)](https://www.youtube.com/playlist?list=PLGLfVvz_LVvQ5G-LdJ8RLqe-ndo7QITYc) - An introduction tutorial about UML.\n* [UML](http://sourcemaking.com/uml) - Another introduction tutorial about UML.\n* [Composer Primer](http://daylerees.com/composer-primer) - A complete tutorial about what is and how to use Composer.\n* [Easy Package Management With Composer](https://code.tutsplus.com/tutorials/easy-package-management-with-composer--net-25530) - An introduction about Composer.\n* [Better Workflow in PHP With Composer, Namespacing, and PHPUnit](https://code.tutsplus.com/tutorials/better-workflow-in-php-with-composer-namespacing-and-phpunit--net-29384) - An introduction tutorial explaining how to use Composer, namespaces and PHPUnit in a PHP project.\n* [PHP Testing Basics (\u0026#9658;)](https://code.tutsplus.com/courses/php-testing-basics) - An introduction about tests in PHP.\n* [Test-Driven PHP in Action (\u0026#9658;$)](https://code.tutsplus.com/courses/test-driven-php-in-action) - An introduction about test-driven development in PHP.\n* [OOP in PHP With Tests (\u0026#9658;$)](https://code.tutsplus.com/courses/oop-in-php-with-tests) - A tutorial about OOP in PHP with tests.\n* [Introduction to PhpDoc](http://www.sitepoint.com/introduction-to-phpdoc/) - An introduction about code documentation in PHP.\n* [PHP \u0026 Enums (\u0026#9658;)](https://www.youtube.com/watch?v=kdWRyl6x6JQ) - An introduction about enums in PHP.\n* [Type Hinting in PHP](http://www.sitepoint.com/type-hinting-in-php/) - An introduction about type hinting in PHP.\n* [Introduction to Static and Dynamic Typing](http://www.sitepoint.com/typing-versus-dynamic-typing/) - A tutorial explaining static and dynamic typing in programming.\n* [Annotations in PHP: They Exist! (\u0026#9658;)](https://www.youtube.com/watch?v=oDVspbFgDCo) - An introduction to annotations in PHP.\n\n### Object-Oriented Design\n*Object-oriented design tutorials.*\n\n* [Object-Oriented Design in PHP (\u0026#9658;$)](https://code.tutsplus.com/courses/object-oriented-design-in-php) - An introduction to object-oriented design in PHP.\n* [Object Oriented Design Cheat Sheet](http://www.cheatography.com/david/cheat-sheets/object-oriented-design/) - A cheat sheet about object-oriented design.\n* [Principles Of Object Oriented Design](http://c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign) - An introduction to some principles about object-oriented design.\n* [Foundations Of OO Design](http://blog.ircmaxell.com/2014/10/foundations-of-oo-design.html) - Some thoughts about object-oriented design.\n* [How to Write Code That Embraces Change](https://code.tutsplus.com/articles/how-to-write-code-that-embraces-change--net-29716) - An introduction to OOD principles like cohesion, orthogonality, coupling, SOLID and others.\n* [Build seven good object-oriented habits in PHP](http://www.ibm.com/developerworks/library/os-php-7oohabits/) - A tutorial about good habits in OOP in PHP.\n* [3 Key Software Principles You Must Understand](https://code.tutsplus.com/tutorials/3-key-software-principles-you-must-understand--net-25161) - An introduction to DRY, KISS and YAGNI principles.\n* [From STUPID to SOLID Code!](http://williamdurand.fr/2013/07/30/from-stupid-to-solid-code/) - An introduction to SOLID principles.\n* [Don't be STUPID: GRASP SOLID!](http://nikic.github.io/2011/12/27/Dont-be-STUPID-GRASP-SOLID.html) - An introduction to SOLID principles in PHP.\n* [Don't Be Stupid, Grasp Solid - Slides](http://blog.ircmaxell.com/2012/05/dont-be-stupid-grasp-solid-slides.html) - An introduction to SOLID and other OOD principles in PHP.\n* [The SOLID Principles](https://code.tutsplus.com/series/the-solid-principles--cms-634) - A series of tutorials about SOLID principles in PHP.\n* [The Single Responsibility Principle](http://www.sitepoint.com/the-single-responsibility-principle/) - An introduction to Single Responsibility Principle in PHP.\n* [The Open/Closed Principle](http://www.sitepoint.com/the-open-closed-principle/) - An introduction to Open/Closed Principle in PHP.\n* [Constructors and Breaking the Liskov Substitution Principle](http://www.sitepoint.com/constructors-and-the-myth-of-breaking-the-lsp/) - An introduction to Liskov Substitution Principle in PHP.\n* [Inversion of Control – The Hollywood Principle](http://www.sitepoint.com/inversion-of-control-the-hollywood-principle/) - An introduction to Inversion of Control Principle in PHP.\n* [The Dependency Inversion Principle](http://www.sitepoint.com/dip-intro/) - An introduction to Dependency Inversion Principle in PHP.\n* [SRP: The Single Responsibility Principle](http://www.objectmentor.com/resources/articles/srp.pdf) - An article explaining the Single Responsibility Principle.\n* [The Open-Closed Principle](http://www.objectmentor.com/resources/articles/ocp.pdf) - An article explaining the Open/Closed Principle.\n* [The Liskov Substitution Principle](http://www.objectmentor.com/resources/articles/lsp.pdf) - An article explaining the Liskov Substitution Principle.\n* [The Interface Segregation Principle](http://www.objectmentor.com/resources/articles/isp.pdf) - An article explaining the Interface Segregation Principle.\n* [The Dependency Inversion Principle](http://www.objectmentor.com/resources/articles/dip.pdf) - An article explaining the Dependency Inversion Principle.\n* [Inversion of Control Containers and the Dependency Injection Pattern](http://martinfowler.com/articles/injection.html) - An article about Inversion of Control Containers and the Dependency Injection Pattern.\n* [DIP in the Wild](http://martinfowler.com/articles/dipInTheWild.html) - An article about Dependency Inversion Principle.\n* [Reducing Coupling](http://martinfowler.com/ieeeSoftware/coupling.pdf) - An article about reducing coupling.\n* [Tell Don't Ask](https://pragprog.com/articles/tell-dont-ask) - An introduction to Tell Don't Ask principle.\n* [Introduction to the Law of Demeter](http://www.sitepoint.com/introduction-to-the-law-of-demeter/) - An introduction to the Law of Demeter.\n* [You Aren't Gonna Need It](http://www.c2.com/cgi/wiki?YouArentGonnaNeedIt) - An introduction to YAGNI principle.\n* [Premature Optimization](http://www.c2.com/cgi/wiki?PrematureOptimization) - An introduction to Premature Optimization anti-pattern.\n* [Primitive Obsession](http://c2.com/cgi/wiki?PrimitiveObsession) - An introduction to Primitive Obsession anti-pattern.\n* [God Class](http://c2.com/cgi/wiki?GodClass) - An introduction to God Class anti-pattern.\n* [Object Calisthenics](http://williamdurand.fr/2013/06/03/object-calisthenics/) - An introduction to Object Calisthenics.\n* [Your code sucks, let's fix it!](http://slideshare.net/rdohms/object-calisthenicstek13) - An introduction to Object Calisthenics in PHP.\n* [Domain-Driven Design](https://code.tutsplus.com/tutorials/domain-driven-design--net-25773) - An introduction to Domain-Driven Design.\n* [The Null Object Pattern - Polymorphism in Domain Models](http://www.sitepoint.com/the-null-object-pattern-polymorphism-in-domain-models/) - An introduction to the Null Object Pattern in PHP.\n* [An Introduction to Services](http://www.sitepoint.com/an-introduction-to-services/) - An introduction to Services in PHP.\n* [Evolving Toward a Persistence Layer](https://code.tutsplus.com/tutorials/evolving-toward-a-persistence-layer--net-27138) - An introduction to Persistence Layer implementation in PHP.\n* [Building a Domain Model – An Introduction to Persistence Agnosticism](http://www.sitepoint.com/building-a-domain-model/) and [Building a Domain Model – Integrating Data Mappers](http://www.sitepoint.com/integrating-the-data-mappers/) - A tutorial about creating a Domain Model in PHP.\n* [Handling Collections of Aggregate Roots – the Repository Pattern](http://www.sitepoint.com/handling-collections-of-aggregate-roots/) - An introduction to the Repository Pattern in PHP.\n* [Value Objects](http://richardmiller.co.uk/2014/11/06/value-objects/) - An introduction to Value Objects in PHP.\n* [What is the difference between Entities and Value Objects?](http://culttt.com/2014/04/30/difference-entities-value-objects/) - A tutorial explaining the difference between Entities and Value Objects.\n* [What’s the difference between Active Record and Data Mapper?](http://culttt.com/2014/06/18/whats-difference-active-record-data-mapper/) - A tutorial explaining the difference between Active Record and Data Mapper patterns.\n* [Managing Class Dependencies: An Introduction to Dependency Injection, Service Locators, and Factories, Part 1](http://www.sitepoint.com/managing-class-dependencies-1/) and [Managing Class Dependencies: An Introduction to Dependency Injection, Service Locators, and Factories, Part 2](http://www.sitepoint.com/managing-class-dependencies-2/) - An introduction to Dependency Injection, Service Locators and Factories.\n* [Money Pattern: The Right Way to Represent Value-Unit Pairs](https://code.tutsplus.com/tutorials/money-pattern-the-right-way-to-represent-value-unit-pairs--net-35509) - An introduction to the Money Pattern in PHP.\n* [Working with Money and Currency in PHP](http://culttt.com/2014/06/04/working-money-currency-php/) - A tutorial about how to work with Money and Currency in PHP.\n* [Working with Products, Orders and Sales in PHP](http://culttt.com/2014/06/11/working-products-orders-sales-php/) - A tutorial about how to work with Products, Orders and Sales in PHP.\n* [Reusing Implementation – a Walk-through of Inheritance, Composition, and Delegation](http://www.sitepoint.com/reusing-implementation-a-walk-through-of-inheritance-composition-and-delegation/) - A tutorial about code reusing and OOP in PHP.\n* [Design Tech Talk Series Presents: OO Design for Testability (\u0026#9658;)](https://www.youtube.com/watch?v=acjvKJiOvXw\u0026index=8\u0026list=PL693EFD059797C21E) - A talk about Object-Oriented Design a testability.\n* [The Clean Code Talks - Don't Look For Things! (\u0026#9658;)](https://www.youtube.com/watch?v=RlfLCWKxHJ0) - Another talk about Object-Oriented Design a testability.\n* [Programming With Anthony - Paradigm Soup (\u0026#9658;)](http://blog.ircmaxell.com/2012/11/programming-with-anthony-paradigm-soup.html) - An introduction to programming paradigms and its differences.\n* [Programming With Anthony - Dependency Injection (\u0026#9658;)](http://blog.ircmaxell.com/2013/01/dependency-injection-programming-with.html) - An introduction to Dependency Injection.\n* [What is Dependency Injection?](http://fabien.potencier.org/article/11/what-is-dependency-injection) - An introduction to Dependency Injection in PHP.\n* [Dependency Injection with PHP 5.3](http://www.slideshare.net/fabpot/dependency-injection-in-php-5354) - Slides about Dependency Injection in PHP.\n* [Why use a Dependency Injection Container?](http://richardmiller.co.uk/2011/07/07/dependency-injection-moving-from-basics-to-container/) - A tutorial of what is and when to use a Dependency Injection Container.\n* [Dependency Injection with Pimple](http://www.sitepoint.com/dependency-injection-with-pimple/) - An introduction to Dependency Injection and how use Pimple for that.\n* [Dependency Injection Is Not The Same As The Dependency Inversion Principle](http://lostechies.com/derickbailey/2011/09/22/dependency-injection-is-not-the-same-as-the-dependency-inversion-principle/) - A tutorial explaining the difference between Dependency Injection and Dependency Inversion Principle.\n* [Catalog of Patterns of Enterprise Application Architecture](http://martinfowler.com/eaaCatalog/index.html) - A catalog of Patterns of Enterprise Application Architecture.\n\n### Design Patterns\n*Design patterns tutorials.*\n\n* [Design Patterns](http://sourcemaking.com/design_patterns) - A complete tutorial about design patterns.\n* [A Beginner's Guide to Design Patterns](https://code.tutsplus.com/articles/a-beginners-guide-to-design-patterns--net-12752) - An introduction tutorial to design patterns.\n* [Design Patterns - Programming With Anthony (\u0026#9658;)](http://blog.ircmaxell.com/2013/02/design-patterns-programming-with-anthony.html) - An introduction to design patterns.\n* [Beyond Design Patterns](http://blog.ircmaxell.com/2013/09/beyond-design-patterns.html) - Another introduction tutorial to design patterns.\n* [The Whens and Whys for PHP Design Patterns](https://code.tutsplus.com/tutorials/the-whens-and-whys-for-php-design-patterns--net-27862) - A tutorial explaining why and when use design patterns in PHP.\n* [Design Patterns Workshop (\u0026#9658;)](https://www.youtube.com/watch?v=0L1pgDPt8U8) - A workshop about design patterns in PHP.\n* [Design Patterns Video Tutorial (\u0026#9658;)](https://www.youtube.com/playlist?list=PLF206E906175C7E07) - A series about design patterns.\n* [PHP Design Patterns - Elements of Reusable Object-Oriented Software (\u0026#9658;)](https://www.youtube.com/playlist?list=PLGJDCzBP5j3xGaW0AGlaVHK2TMEr2XkP9) - A series about design patterns in PHP.\n* [Agile Design Patterns (\u0026#9658;$)](https://code.tutsplus.com/courses/agile-design-patterns) - A series about design patterns in PHP.\n* [Design Patterns in PHP (\u0026#9658;$)](http://www.lynda.com/PHP-tutorials/Design-Patterns-PHP/186870-2.html) - Another series about design patterns in PHP.\n* [Introduction to Design Patterns with PHP](https://speakerdeck.com/hhamon/introduction-to-design-patterns-with-php) - An introduction slide to SOLID and design patterns in PHP.\n* [Database Design Patterns](https://speakerdeck.com/hhamon/database-design-patterns-with-php-53) - A slide about database design patterns in PHP.\n* [Design Patterns PHP](https://github.com/domnikl/DesignPatternsPHP) - A collection of design patterns and some code implementation in PHP.\n* [Anti Patterns](http://sourcemaking.com/antipatterns) - A complete tutorial about anti patterns.\n* [Design Patterns with PHP - Adapters](http://grossi.io/2013/design-patterns-with-php-adapters/) - A tutorial about Adapter pattern in PHP.\n* [Practical Aspects of the Adapter Pattern](http://www.sitepoint.com/practical-aspects-of-the-adapter-pattern/) - Another tutorial about Adapter pattern in PHP.\n* [Understanding the Command Design Pattern](http://www.sitepoint.com/understanding-the-command-design-pattern/) - A tutorial about Command pattern in PHP.\n* [Understanding the Observer Pattern](http://www.sitepoint.com/understanding-the-observer-pattern/) - A tutorial about Observer pattern in PHP.\n* [Iterators - Programming With Anthony (\u0026#9658;)](http://blog.ircmaxell.com/2013/01/todays-programming-with-anthony-video.html) - An introduction to Iterator pattern in PHP.\n* [Iterators in PHP (\u0026#9658;)](https://www.youtube.com/watch?v=t7KLwA52K7Y) - A talk about iterators in PHP.\n* [Mediators - Programming With Anthony](http://blog.ircmaxell.com/2013/01/mediators-programming-with-anthony.html) - An introduction to Mediator pattern.\n* [Manage Complexity with the Facade Pattern](http://www.sitepoint.com/manage-complexity-with-the-facade-pattern/) - An introduction to Facade pattern in PHP.\n* [What are the benefits of using Repositories?](http://culttt.com/2014/09/08/benefits-using-repositories/) - An introduction to Repository pattern in PHP.\n* [The Repository Design Pattern](https://code.tutsplus.com/tutorials/the-repository-design-pattern--net-35804) - A complete tutorial about Repository pattern in PHP.\n* [An Introduction to the Front Controller Pattern, Part 1](http://www.sitepoint.com/front-controller-pattern-1/) and [An Introduction to the Front Controller Pattern, Part 2](http://www.sitepoint.com/front-controller-pattern-2/) - An introduction to Front Controller pattern in PHP.\n* [The Template Method Pattern - Override Strategy Logic](http://www.sitepoint.com/overriding-strategy-logic-the-template-method-pattern/) - An introduction to Template method in PHP.\n* [What is the Factory Method Design Pattern?](http://culttt.com/2014/03/19/factory-method-design-pattern/) - An introduction to Factory pattern in PHP.\n* [What is the Decorator Pattern?](http://culttt.com/2014/04/23/decorator-pattern/) - An introduction to Decorator pattern in PHP.\n\n### Refactoring\n*Refactoring tutorials.*\n\n* [Refactoring](http://sourcemaking.com/refactoring) - A complete tutorial guide about refactoring.\n* [Code Refactoring (\u0026#9658;)](https://www.youtube.com/playlist?list=PLGLfVvz_LVvSuz6NuHAzpM52qKM6bPlCV) - A series about code refactoring.\n* [Clean Code Refactoring (\u0026#9658;)](https://www.youtube.com/watch?v=3oVNbNaitRA) - A talk about refactoring and clean code in PHP.\n* [Refactoring Legacy Code](https://code.tutsplus.com/series/refactoring-legacy-code--cms-633) - A tutorial series about refactoring legacy code with examples.\n* [Detecting Code Smells (\u0026#9658;$)](https://code.tutsplus.com/courses/detecting-code-smells) - A series about code smells in PHP.\n* [Techniques for Refactoring Code (\u0026#9658;$)](https://code.tutsplus.com/courses/techniques-for-refactoring-code) - A series about refactoring code in PHP.\n* [Workflows of Refactoring (\u0026#9658;)](https://www.youtube.com/watch?v=vqEg37e4Mkw) - A talk about workflows of refactoring.\n* [Beyond Clean Code](http://blog.ircmaxell.com/2013/11/beyond-clean-code.html) - An introduction about clean code.\n* [Catalog of Refactorings](http://refactoring.com/catalog/index.html) - A catalog of refactorings.\n\n### Architecture\n*Architecture tutorials.*\n\n* [Create Your Own PHP Framework](http://fabien.potencier.org/article/50/create-your-own-framework-on-top-of-the-symfony2-components-part-1) - A series of articles on how to create your own PHP framework.\n* [Creating Your Own MVC Series (\u0026#9658;)](https://www.youtube.com/playlist?list=PL7A20112CF84B2229) - Another series on how to create your own PHP framework.\n* [A Beginner's Guide To MVC For The Web](http://blog.ircmaxell.com/2014/11/a-beginners-guide-to-mvc-for-web.html) - A tutorial about MVC for the web.\n* [The MVC Pattern and PHP, Part 1](http://www.sitepoint.com/the-mvc-pattern-and-php-1/) and [The MVC Pattern and PHP, Part 2](http://www.sitepoint.com/the-mvc-pattern-and-php-2/) - An introduction tutorial about MVC pattern.\n* [Alternatives To MVC](http://blog.ircmaxell.com/2014/11/alternatives-to-mvc.html) - An introduction to alternative architectures to MVC.\n* [N-Tier Architecture - An Introduction](http://blog.ircmaxell.com/2012/08/n-tier-architecture-introduction.html) - An introduction to n-tier architecture.\n* [Hexagonal Architecture](http://fideloper.com/hexagonal-architecture) - An introduction to Hexagonal Architecture in PHP.\n\n### Miscellaneous\n*Not related to OOP but interesting resources.*\n\n* [Awesome PHP](https://github.com/ziadoz/awesome-php) - A curated list of amazingly awesome PHP libraries, resources and shiny things.\n* [PHP The Right Way](http://www.phptherightway.com/) - A complete guide about the best practices and tutorials in PHP.\n* [PHP Lecture Slides](http://edu.williamdurand.fr/php-slides/#slide1) - A complete and concise slide about PHP fundamentals, OOP, REST, Composer, MVC, Design Patterns, ORM, Security, OOD and testing in PHP.\n* [Functional Programming in PHP](https://code.tutsplus.com/tutorials/functional-programming-in-php--net-35043) - An introduction to functional programming in PHP.\n* [Functional Programming and PHP](http://www.sitepoint.com/functional-programming-and-php/) - Another introduction to functional programming and concepts in PHP.\n* [What's In A Type](http://blog.ircmaxell.com/2014/10/whats-in-type.html) - A tutorial about types and PHP.\n* [Data Structures for PHP Devs: Stacks and Queues](http://www.sitepoint.com/php-data-structures-1/) - A tutorial about Stacks and Queues data structures in PHP.\n* [Data Structures for PHP Devs: Trees](http://www.sitepoint.com/data-structures-2/) - A tutorial about Tree data structure in PHP.\n* [Data Structures for PHP Devs: Heaps](http://www.sitepoint.com/data-structures-3/) - A tutorial about Heap data structure in PHP.\n* [Data Structures for PHP Devs: Graphs](http://www.sitepoint.com/data-structures-4/) - A tutorial about Graph data structure in PHP.\n* [PHP Security Pitfalls (\u0026#9658;$)](https://code.tutsplus.com/courses/php-security-pitfalls) - A series about security in PHP.\n\n## Videos\n*Videos about object-oriented programming and related concepts.*\n\n* *...more to come...*\n\n## Slides\n*Slides about object-oriented programming and related concepts.*\n\n* [The OOP in PHP](http://matthewturland.com/slides/phpoop-tutorial/) - An introductory tutorial to OOP concepts and terminology using PHP's object model as an example.\n\n## Courses\n*Courses about object-oriented programming and related concepts.*\n\n* *...more to come...*\n\n## Books\n*Fantastic and must-read books about object-oriented programming, analysis, design and related concepts.*\n\n* [PHP Objects, Patterns, and Practices](http://books.google.com/books?id=1JkQAwAAQBAJ\u0026hl=pt-BR\u0026source=gbs_book_other_versions)\n* [Head First Design Patterns](http://books.google.com/books/about/Head_First_Design_Patterns.html?id=LjJcCnNf92kC\u0026redir_esc=y)\n* [Design Patterns: Elements of Reusable Object-Oriented Software](http://books.google.com/books/about/Design_Patterns.html?id=6oHuKQe3TjQC\u0026redir_esc=y)\n* [Head First Object-Oriented Analysis and Design](http://books.google.com/books/about/Head_First_Object_Oriented_Analysis_and.html?id=-QpmamSKl_EC\u0026redir_esc=y)\n* [Agile Principles, Patterns, and Practices in C#](http://books.google.com/books/about/Agile_Principles_Patterns_and_Practices.html?id=x4tQAAAAMAAJ\u0026redir_esc=y)\n* [Growing Object-Oriented Software, Guided by Tests](http://books.google.com/books/about/Growing_Object_Oriented_Software_Guided.html?id=fOyYCR4oYs0C\u0026redir_esc=y)\n* [Test Driven Development: By Example](http://books.google.com/books/about/Test_driven_Development.html?id=gFgnde_vwMAC\u0026redir_esc=y)\n* [Clean Code: A Handbook of Agile Software Craftsmanship](http://books.google.com/books/about/Clean_Code.html?id=_i6bDeoCQzsC\u0026redir_esc=y)\n* [Refactoring: Improving the Design of Existing Code](http://books.google.com/books/about/Refactoring.html?id=1MsETFPD3I0C\u0026redir_esc=y)\n* [UML Distilled: A Brief Guide to the Standard Object Modeling Language](http://books.google.com/books/about/UML_Distilled.html?id=nHZslSr1gJAC\u0026redir_esc=y)\n* [Patterns of Enterprise Application Architecture](http://books.google.com/books/about/Patterns_of_Enterprise_Application_Archi.html?id=FyWZt5DdvFkC\u0026redir_esc=y)\n* [Domain-Driven Design: Tackling Complexity in the Heart of Software](http://books.google.com/books/about/Domain_driven_Design.html?id=7dlaMs0SECsC\u0026redir_esc=y)\n* [The Pragmatic Programmer: From Journeyman to Master](http://books.google.com/books/about/The_Pragmatic_Programmer.html?id=5wBQEp6ruIAC\u0026redir_esc=y)\n* [The Passionate Programmer: Creating a Remarkable Career in Software Development](http://books.google.com/books/about/The_Passionate_Programmer.html?id=FvJePgAACAAJ\u0026redir_esc=y)\n\n## People\n*Some fantastic and influential PHP and non-PHP developers.*\n\n* [Adam Culp](https://twitter.com/adamculp) - Consultant at Zend Technologies and Sunshine PHP organizer.\n* [Alvaro Videla](https://twitter.com/old_sound) - Creator of PHP library for RabbitMQ and co-author of RabbitMQ in Action.\n* [Andi Gutmans](https://twitter.com/andigutmans) - CEO and co-founder of Zend and PHP co-architect.\n* [Andy Hunt](https://twitter.com/PragmaticAndy) - One of the original authors of Agile Manifesto and co-author of The Pragmatic Programmer book.\n* [Anthony Ferrara](https://twitter.com/ircmaxell) - Co-author of PHP Internals book and Developer Advocate for Google.\n* [Benjamin Eberlei](https://twitter.com/beberlei) - Project-leader of Doctrine ORM and contributor to the Symfony2 Framework.\n* [Bernhard Schussek](https://twitter.com/webmozart) - Member of Symfony2 core development and creator of Puli library.\n* [Bruno Skvorc](https://twitter.com/bitfalls) - Web developer and PHP editor in Sitepoint.\n* [Cal Evans](https://twitter.com/CalEvans) - PHP developer and open source contributor.\n* [Chad Fowler](https://twitter.com/chadfowler) - Developer, speaker and author of The Passionate Programmer book.\n* [Christophe Coevoet](https://twitter.com/Stof70) - Member of Symfony2 core development and open source contributor to projects like Doctrine ORM.\n* [David Zuelke](https://twitter.com/dzuelke) - PHP developer at Heroku and regular speaker.\n* [Dayle Rees](https://twitter.com/daylerees) - Laravel evangelist and author of Laravel Code Bright and Code Happy books.\n* [Derick Rethans](https://twitter.com/derickr) - Author of Xdebug and PHP engineer/evangelist on MongoDB.\n* [Erika Heidi](https://twitter.com/erikaheidi) - Author of Vagrant Cookbook and Phansible project and developer evangelist at Digital Ocean.\n* [Fabien Potencier](https://twitter.com/fabpot) - CEO and co-founder of SensioLabs and founder and project lead of Symfony Framework.\n* [Guilherme Blanco](https://twitter.com/guilhermeblanco) - PHP developer and open source contributor to projects like Doctrine ORM and Zend and Symfony frameworks.\n* [Hugo Hamon](https://twitter.com/hhamon) - PHP developer and head of training in SensioLabs.\n* [Igor Wiedler](https://twitter.com/igorwhiletrue) - Creator of Silex micro-framework and open-source contributor to projects like Symfony and Composer.\n* [Javier Eguiluz](https://twitter.com/javiereguiluz) - Symfony evangelist in SensioLab and creator of easybook project.\n* [Jeffrey Way](https://twitter.com/jeffrey_way) - Creator of Laracasts and Laravel contributor and evangelist.\n* [Jeremy Mikola](https://twitter.com/jmikola) - Engineer at MongoDB, open source contributor to projects like Doctrine ODM and Symfony Framework, and co-organizer of WurstCon.\n* [Johannes Schmitt](https://twitter.com/schmittjoh) - Founder of Scrutinizer CI and open source contributor to projects like Symfony.\n* [Jordi Boggiano](https://twitter.com/seldaek) - Founder of Toran Proxy, co-creator and project lead of Composer and Monolog and Symfony core developer.\n* [Josh Lockhart](https://twitter.com/codeguy) - Creator of Slim Framework and PHP The Right Way site.\n* [Julien Pauli](https://twitter.com/julienPauli) - Co-author of PHP Internals book and open source contributor.\n* [Kent Beck](https://twitter.com/KentBeck) - One of the original authors of Agile Manifesto and creator of Exteme Programming and Test Driven Development.\n* [Konstantin Kudryashov](https://twitter.com/everzet) - Creator of Behat and PhpSpec test frameworks.\n* [Kris Wallsmith](https://twitter.com/kriswallsmith) - PHP developer and creator of Assetic framework and Buzz library.\n* [Larry Garfield](https://twitter.com/Crell) - PHP developer and core contributor of Drupal.\n* [Lukas Kahwe Smith](https://twitter.com/lsmith) - PHP developer and open source contributor to projects like Doctrine ORM and Symfony Framework.\n* [Marcello Duarte](https://twitter.com/_md) - PHP developer and co-creator of PhpSpec test framework.\n* [Martin Fowler](https://twitter.com/martinfowler) - One of the original authors of Agile Manifesto and author of the best selling books about software engineering like Patterns of Enterprise Application Architecture and Refactoring books.\n* [Matthew Weier O'Phinney](https://twitter.com/mwop) - Principal Enginner at Zend Technologies and project lead for Zend Framework and Apigility.\n* [Matthias Noback](https://twitter.com/matthiasnoback) - PHP developer and author of books like A Year with Symfony and Principles of Package Design.\n* [Marco Pivetta](https://twitter.com/Ocramius) - PHP developer and core team member of Doctrine ORM and team member of Zend Framework.\n* [Michael Dowling](https://twitter.com/mtdowling) - Software enginner at Amazon Web Services and creator of Guzzle library.\n* [Mike van Riel](https://twitter.com/mvriel/) - PHP developer and lead developer of phpDocumentor and Cilex projects.\n* [Nikita Popov](https://twitter.com/nikita_ppv) - Co-author of PHP Internals book, open source contributor and creator of PHP Parser library.\n* [Nils Adermann](https://twitter.com/naderman) - PHP developer and co-creator of Composer.\n* [Pablo Godel](https://twitter.com/pgodel) - PHP developer, open source contributor and co-organizer of Sunshine PHP.\n* [Paul Jones](https://twitter.com/pmjones) - PHP developer, creator of Aura PHP, open source contributor and author of Modernizing Legacy Applications in PHP.\n* [Phil Sturgeon](https://twitter.com/philsturgeon) - Founder of PyroCMS, open source contributor and author of Build APIs You Won't Hate book.\n* [Philip Brown](https://twitter.com/philipbrown) - PHP developer and writer in Culttt website.\n* [Pádraic Brady](https://twitter.com/padraicb/) - Creator of Mockery library and open source contributor to projects like Zend Framework.\n* [Rafael Dohms](https://twitter.com/rdohms) - PHP developer and evangelist, open source contributor and organizer of Amsterdam PHP.\n* [Rasmus Lerdorf](https://twitter.com/rasmus) - Creator of PHP and open source contributor.\n* [Rob Allen](https://twitter.com/akrabat) - PHP developer, Zend Framework contributor and co-author of Zend Framework in Action book.\n* [Robert C. Martin](https://twitter.com/unclebobmartin) - One of the original authors of Agile Manifesto and author of the best selling books about software engineering like Clean Code and Agile Principles, Patterns, and Practices in C# books.\n* [Ryan Weaver](https://twitter.com/weaverryan) - PHP developer, trainer and consultant at KnpLabs and member of Symfony core team.\n* [Sara Golemon](https://twitter.com/SaraMG) - Open source contributor to projects like PHP runtime and HHVM and author of Extending and Embedding PHP book.\n* [Sebastian Bergmann](https://twitter.com/s_bergmann) - PHP developer, open source contributor and creator of PHPUnit test framework.\n* [Taylor Otwell](https://twitter.com/taylorotwell) - PHP developer and creator of Laravel Framework.\n* [Ward Cunningham](https://twitter.com/WardCunningham) - Programmer pioneer in Design Patterns and Extreme Programming.\n* [William Durand](https://twitter.com/couac) - PHP developer, open source contributor and creator of Geocoder library.\n* [Zeev Suraski](https://twitter.com/zeevs) - CTO and co-founder of Zend and PHP co-architect.\n\n## Some Questions\n\n***I found not related to PHP resources. Is this correct?***  \nThe project name is \"Learning OOP in PHP\". But, despite the name, object oriented programming is a concept related to a lot of other languages like C++, Java, C#, Python, Ruby and so on. That said, exists a lot of fantastic resources like videos and tutorials about object-oriented programming made in another programming languages and I considered reasonable include them here in this reference.\n\n***There are some tutorials that aren't in the correct section?***  \nI tried to keep this reference as simple as possible and divided it in a few areas. But there are some problems! Feel free to make any suggestions and contribute.\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/marcelgsantos%2Flearning-oop-in-php/projects"}