A collection of resources to learn object-oriented programming and related concepts for PHP developers.
Object-oriented programming fundamentals tutorials.
- Object Introduction (►) - An introduction about objects and related concepts.
- Intro To Object Associations (►) - An introduction about object associations.
- Object-Oriented Programming (►) - An introduction about object-oriented programming in general.
- Getting Started with OOP in PHP (►) - Object-oriented programming introduction in PHP.
- Beginning OOP in PHP (►) - Another object-oriented programming introduction in PHP.
- Intermediate OOP in PHP (►) - Intermediate concepts about object-oriented programming in PHP.
- PHP OOP Tutorials (►) - Tutorials about OOP, Design Patterns and MVC.
- PHP Object Oriented Programming Fundamentals (►$) - An introduction course about object-oriented programming in PHP.
- OOP Official PHP Reference - PHP official reference about object-oriented programming.
- Object-Oriented PHP for Beginners - A tutorial about OOP in PHP for beginners.
- Introduction to OOP Concepts and More - A tutorial about OOP and an introduction to UML and Design Patterns.
- From Procedural to Object Oriented PHP - A tutorial from procedural to object-oriented programming in PHP.
- OOP vs Procedural Code - Difference between OOP and procedural code.
Object-oriented programming advanced tutorials.
- What Are Abstract Classes? - A tutorial explaining abstract classes in PHP.
- Abstract Classes and Interfaces (►) - Introduction about abstract classes and interfaces.
- When should I code to an Interface? - A tutorial explaining what is and when to use interfaces in PHP.
- Understanding and Applying Polymorphism in PHP - A tutorial explaining about abstract classes, interfaces and polymorphism in PHP.
- Inheritance and Polymorphism Concepts (►) - An introduction about inheritance and polymorphism.
- Beyond Inheritance - A tutorial explaining what is inheritance and its types.
- The Clean Code Talks - Inheritance, Polymorphism, & Testing (►) - A tutorial about polymorphism and how it affects testing.
- PHP Namespaces Explained - A tutorial explaining how namespaces works in PHP.
- PHP Namespaces - A tutorial explaining what is and how namespaces works in PHP.
- PHP Namespaces in 120 Seconds Tutorial (►) - A 120 seconds long tutorial explaining what is and how to use namespaces in PHP.
- PSR-Huh? - An introduction about PSR standards.
- Autoloading in PHP and the PSR-0 Standard - An introduction about what is autoloading in PHP and the PSR-0 standard.
- Battle of the Autoloaders: PSR-0 vs. PSR-4 - A tutorial explaining the difference between PSR-0 and PSR-4 autoloader standards.
- PSR-4 Autoloading (►$) - A tutorial explaining PSR-4 autoloader standard.
- How Static Works in PHP (►) - An introduction on how static members work in PHP.
- When to Use Static Methods - A tutorial explaining when to use static methods in PHP.
- PHP Exceptions - An introduction about exceptions in PHP.
- When should you use an Exception? - A tutorial explaining when to use exceptions in PHP.
- Error Handling in PHP - An introduction about error handling in PHP and exceptions.
- What are PHP Magic Methods? - A tutorial explaining what is magic methods and examples on how to use them in PHP.
- Magic Methods and Predefined Constants in PHP - A tutorial about magic methods and predefined constants in PHP.
- What are PHP Traits? - A tutorial explaining what is and how to use traits in PHP.
- Using Traits in PHP 5.4 - Another tutorial explaining what is and how to use traits in PHP.
- The PHP Reflection API (►) - A tutorial explaining the PHP Reflection API.
- What is Reflection in PHP? - A tutorial explaining what is, when to use and some samples about reflection in PHP.
- Reflection in PHP - Another tutorial about reflection in PHP.
- UML 2.0 Tutorial (►) - An introduction tutorial about UML.
- UML - Another introduction tutorial about UML.
- Composer Primer - A complete tutorial about what is and how to use Composer.
- Easy Package Management With Composer - An introduction about Composer.
- Better Workflow in PHP With Composer, Namespacing, and PHPUnit - An introduction tutorial explaining how to use Composer, namespaces and PHPUnit in a PHP project.
- PHP Testing Basics (►) - An introduction about tests in PHP.
- Test-Driven PHP in Action (►$) - An introduction about test-driven development in PHP.
- OOP in PHP With Tests (►$) - A tutorial about OOP in PHP with tests.
- Introduction to PhpDoc - An introduction about code documentation in PHP.
- PHP & Enums (►) - An introduction about enums in PHP.
- Type Hinting in PHP - An introduction about type hinting in PHP.
- Introduction to Static and Dynamic Typing - A tutorial explaining static and dynamic typing in programming.
- Annotations in PHP: They Exist! (►) - An introduction to annotations in PHP.
Object-oriented design tutorials.
- Object-Oriented Design in PHP (►$) - An introduction to object-oriented design in PHP.
- Object Oriented Design Cheat Sheet - A cheat sheet about object-oriented design.
- Principles Of Object Oriented Design - An introduction to some principles about object-oriented design.
- Foundations Of OO Design - Some thoughts about object-oriented design.
- How to Write Code That Embraces Change - An introduction to OOD principles like cohesion, orthogonality, coupling, SOLID and others.
- Build seven good object-oriented habits in PHP - A tutorial about good habits in OOP in PHP.
- 3 Key Software Principles You Must Understand - An introduction to DRY, KISS and YAGNI principles.
- From STUPID to SOLID Code! - An introduction to SOLID principles.
- Don't be STUPID: GRASP SOLID! - An introduction to SOLID principles in PHP.
- Don't Be Stupid, Grasp Solid - Slides - An introduction to SOLID and other OOD principles in PHP.
- The SOLID Principles - A series of tutorials about SOLID principles in PHP.
- The Single Responsibility Principle - An introduction to Single Responsibility Principle in PHP.
- The Open/Closed Principle - An introduction to Open/Closed Principle in PHP.
- Constructors and Breaking the Liskov Substitution Principle - An introduction to Liskov Substitution Principle in PHP.
- Inversion of Control – The Hollywood Principle - An introduction to Inversion of Control Principle in PHP.
- The Dependency Inversion Principle - An introduction to Dependency Inversion Principle in PHP.
- SRP: The Single Responsibility Principle - An article explaining the Single Responsibility Principle.
- The Open-Closed Principle - An article explaining the Open/Closed Principle.
- The Liskov Substitution Principle - An article explaining the Liskov Substitution Principle.
- The Interface Segregation Principle - An article explaining the Interface Segregation Principle.
- The Dependency Inversion Principle - An article explaining the Dependency Inversion Principle.
- Inversion of Control Containers and the Dependency Injection Pattern - An article about Inversion of Control Containers and the Dependency Injection Pattern.
- DIP in the Wild - An article about Dependency Inversion Principle.
- Reducing Coupling - An article about reducing coupling.
- Tell Don't Ask - An introduction to Tell Don't Ask principle.
- Introduction to the Law of Demeter - An introduction to the Law of Demeter.
- You Aren't Gonna Need It - An introduction to YAGNI principle.
- Premature Optimization - An introduction to Premature Optimization anti-pattern.
- Primitive Obsession - An introduction to Primitive Obsession anti-pattern.
- God Class - An introduction to God Class anti-pattern.
- Object Calisthenics - An introduction to Object Calisthenics.
- Your code sucks, let's fix it! - An introduction to Object Calisthenics in PHP.
- Domain-Driven Design - An introduction to Domain-Driven Design.
- The Null Object Pattern - Polymorphism in Domain Models - An introduction to the Null Object Pattern in PHP.
- An Introduction to Services - An introduction to Services in PHP.
- Evolving Toward a Persistence Layer - An introduction to Persistence Layer implementation in PHP.
- Building a Domain Model – An Introduction to Persistence Agnosticism and Building a Domain Model – Integrating Data Mappers - A tutorial about creating a Domain Model in PHP.
- Handling Collections of Aggregate Roots – the Repository Pattern - An introduction to the Repository Pattern in PHP.
- Value Objects - An introduction to Value Objects in PHP.
- What is the difference between Entities and Value Objects? - A tutorial explaining the difference between Entities and Value Objects.
- What’s the difference between Active Record and Data Mapper? - A tutorial explaining the difference between Active Record and Data Mapper patterns.
- Managing Class Dependencies: An Introduction to Dependency Injection, Service Locators, and Factories, Part 1 and Managing Class Dependencies: An Introduction to Dependency Injection, Service Locators, and Factories, Part 2 - An introduction to Dependency Injection, Service Locators and Factories.
- Money Pattern: The Right Way to Represent Value-Unit Pairs - An introduction to the Money Pattern in PHP.
- Working with Money and Currency in PHP - A tutorial about how to work with Money and Currency in PHP.
- Working with Products, Orders and Sales in PHP - A tutorial about how to work with Products, Orders and Sales in PHP.
- Reusing Implementation – a Walk-through of Inheritance, Composition, and Delegation - A tutorial about code reusing and OOP in PHP.
- Design Tech Talk Series Presents: OO Design for Testability (►) - A talk about Object-Oriented Design a testability.
- The Clean Code Talks - Don't Look For Things! (►) - Another talk about Object-Oriented Design a testability.
- Programming With Anthony - Paradigm Soup (►) - An introduction to programming paradigms and its differences.
- Programming With Anthony - Dependency Injection (►) - An introduction to Dependency Injection.
- What is Dependency Injection? - An introduction to Dependency Injection in PHP.
- Dependency Injection with PHP 5.3 - Slides about Dependency Injection in PHP.
- Why use a Dependency Injection Container? - A tutorial of what is and when to use a Dependency Injection Container.
- Dependency Injection with Pimple - An introduction to Dependency Injection and how use Pimple for that.
- Dependency Injection Is Not The Same As The Dependency Inversion Principle - A tutorial explaining the difference between Dependency Injection and Dependency Inversion Principle.
- Catalog of Patterns of Enterprise Application Architecture - A catalog of Patterns of Enterprise Application Architecture.
Design patterns tutorials.
- Design Patterns - A complete tutorial about design patterns.
- A Beginner's Guide to Design Patterns - An introduction tutorial to design patterns.
- Design Patterns - Programming With Anthony (►) - An introduction to design patterns.
- Beyond Design Patterns - Another introduction tutorial to design patterns.
- The Whens and Whys for PHP Design Patterns - A tutorial explaining why and when use design patterns in PHP.
- Design Patterns Workshop (►) - A workshop about design patterns in PHP.
- Design Patterns Video Tutorial (►) - A series about design patterns.
- PHP Design Patterns - Elements of Reusable Object-Oriented Software (►) - A series about design patterns in PHP.
- Agile Design Patterns (►$) - A series about design patterns in PHP.
- Design Patterns in PHP (►$) - Another series about design patterns in PHP.
- Introduction to Design Patterns with PHP - An introduction slide to SOLID and design patterns in PHP.
- Database Design Patterns - A slide about database design patterns in PHP.
- Design Patterns PHP - A collection of design patterns and some code implementation in PHP.
- Anti Patterns - A complete tutorial about anti patterns.
- Design Patterns with PHP - Adapters - A tutorial about Adapter pattern in PHP.
- Practical Aspects of the Adapter Pattern - Another tutorial about Adapter pattern in PHP.
- Understanding the Command Design Pattern - A tutorial about Command pattern in PHP.
- Understanding the Observer Pattern - A tutorial about Observer pattern in PHP.
- Iterators - Programming With Anthony (►) - An introduction to Iterator pattern in PHP.
- Iterators in PHP (►) - A talk about iterators in PHP.
- Mediators - Programming With Anthony - An introduction to Mediator pattern.
- Manage Complexity with the Facade Pattern - An introduction to Facade pattern in PHP.
- What are the benefits of using Repositories? - An introduction to Repository pattern in PHP.
- The Repository Design Pattern - A complete tutorial about Repository pattern in PHP.
- An Introduction to the Front Controller Pattern, Part 1 and An Introduction to the Front Controller Pattern, Part 2 - An introduction to Front Controller pattern in PHP.
- The Template Method Pattern - Override Strategy Logic - An introduction to Template method in PHP.
- What is the Factory Method Design Pattern? - An introduction to Factory pattern in PHP.
- What is the Decorator Pattern? - An introduction to Decorator pattern in PHP.
Refactoring tutorials.
- Refactoring - A complete tutorial guide about refactoring.
- Code Refactoring (►) - A series about code refactoring.
- Clean Code Refactoring (►) - A talk about refactoring and clean code in PHP.
- Refactoring Legacy Code - A tutorial series about refactoring legacy code with examples.
- Detecting Code Smells (►$) - A series about code smells in PHP.
- Techniques for Refactoring Code (►$) - A series about refactoring code in PHP.
- Workflows of Refactoring (►) - A talk about workflows of refactoring.
- Beyond Clean Code - An introduction about clean code.
- Catalog of Refactorings - A catalog of refactorings.
Architecture tutorials.
- Create Your Own PHP Framework - A series of articles on how to create your own PHP framework.
- Creating Your Own MVC Series (►) - Another series on how to create your own PHP framework.
- A Beginner's Guide To MVC For The Web - A tutorial about MVC for the web.
- The MVC Pattern and PHP, Part 1 and The MVC Pattern and PHP, Part 2 - An introduction tutorial about MVC pattern.
- Alternatives To MVC - An introduction to alternative architectures to MVC.
- N-Tier Architecture - An Introduction - An introduction to n-tier architecture.
- Hexagonal Architecture - An introduction to Hexagonal Architecture in PHP.
Not related to OOP but interesting resources.
- Awesome PHP - A curated list of amazingly awesome PHP libraries, resources and shiny things.
- PHP The Right Way - A complete guide about the best practices and tutorials in PHP.
- PHP Lecture Slides - A complete and concise slide about PHP fundamentals, OOP, REST, Composer, MVC, Design Patterns, ORM, Security, OOD and testing in PHP.
- Functional Programming in PHP - An introduction to functional programming in PHP.
- Functional Programming and PHP - Another introduction to functional programming and concepts in PHP.
- What's In A Type - A tutorial about types and PHP.
- Data Structures for PHP Devs: Stacks and Queues - A tutorial about Stacks and Queues data structures in PHP.
- Data Structures for PHP Devs: Trees - A tutorial about Tree data structure in PHP.
- Data Structures for PHP Devs: Heaps - A tutorial about Heap data structure in PHP.
- Data Structures for PHP Devs: Graphs - A tutorial about Graph data structure in PHP.
- PHP Security Pitfalls (►$) - A series about security in PHP.
Videos about object-oriented programming and related concepts.
- ...more to come...
Slides about object-oriented programming and related concepts.
- The OOP in PHP - An introductory tutorial to OOP concepts and terminology using PHP's object model as an example.
Courses about object-oriented programming and related concepts.
- ...more to come...
Fantastic and must-read books about object-oriented programming, analysis, design and related concepts.
- PHP Objects, Patterns, and Practices
- Head First Design Patterns
- Design Patterns: Elements of Reusable Object-Oriented Software
- Head First Object-Oriented Analysis and Design
- Agile Principles, Patterns, and Practices in C#
- Growing Object-Oriented Software, Guided by Tests
- Test Driven Development: By Example
- Clean Code: A Handbook of Agile Software Craftsmanship
- Refactoring: Improving the Design of Existing Code
- UML Distilled: A Brief Guide to the Standard Object Modeling Language
- Patterns of Enterprise Application Architecture
- Domain-Driven Design: Tackling Complexity in the Heart of Software
- The Pragmatic Programmer: From Journeyman to Master
- The Passionate Programmer: Creating a Remarkable Career in Software Development