An open API service indexing awesome lists of open source software.

https://github.com/pickleboxer/php-oop-learning


https://github.com/pickleboxer/php-oop-learning

Last synced: 5 months ago
JSON representation

Awesome Lists containing this project

README

          

# ๐Ÿ”„ PHP OOP Learning Repository

[![PHP Version](https://img.shields.io/badge/PHP-7.4%2B-blue.svg)](https://www.php.net/releases/7_4_0.php)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)

Welcome to the PHP Object-Oriented Programming (OOP) Learning Repository. This comprehensive guide covers everything from basic OOP concepts to advanced enterprise patterns in PHP.

---

## ๐Ÿ“‹ Table of Contents

- [1. Fundamentals of OOP](./01-fundamentals/README.md)
- [2. Advanced OOP Concepts](./02-advanced-oop/README.md)
- [3. SOLID Principles](./03-solid-principles/README.md)
- [4. Design Patterns](./04-design-patterns/README.md)
- [5. Enterprise Patterns](./05-enterprise-patterns/README.md)
- [6. Code Quality and Standards](./06-code-quality/README.md)

---

### 1. ๐Ÿ”ฐ Fundamentals of OOP

Click to expand Fundamentals topics

- [Classes and Objects](./01-fundamentals/01-classes-and-objects.md)
- [Properties and Methods](./01-fundamentals/02-properties-and-methods.md)
- [Encapsulation](./01-fundamentals/03-encapsulation.md)
- [Inheritance](./01-fundamentals/04-inheritance.md)
- [Polymorphism](./01-fundamentals/05-polymorphism.md)
- [Abstraction](./01-fundamentals/06-abstraction.md)
- [Interfaces](./01-fundamentals/07-interfaces.md)
- [Namespaces](./01-fundamentals/08-namespaces.md)
- [Practical Project](./01-fundamentals/09-practical-project.md)
- [Best Practices](./01-fundamentals/10-oop-cheat-sheet.md)

### 2. ๐Ÿš€ Advanced OOP Concepts

Click to expand Advanced OOP topics

- [Namespaces](./02-advanced-oop/01-namespaces.md)
- [Traits](./02-advanced-oop/02-traits.md)
- [Anonymous Classes](./02-advanced-oop/03-anonymous-classes.md)
- [Late Static Binding](./02-advanced-oop/04-late-static-binding.md)
- [Object Cloning & Comparison](./02-advanced-oop/05-object-cloning-comparison.md)
- [Reflection](./02-advanced-oop/06-reflection.md)
- [Magic Methods](./02-advanced-oop/07-magic-methods.md)
- [Type Declarations](./02-advanced-oop/08-type-declarations.md)
- [Iterators & Generators](./02-advanced-oop/09-iterators-generators.md)
- [Closure & Callable](./02-advanced-oop/10-closure-callable.md)

### 3. โš–๏ธ SOLID Principles

Click to expand SOLID topics

- [Single Responsibility Principle](./03-solid-principles/01-single-responsibility.md)
- [Open/Closed Principle](./03-solid-principles/02-open-closed.md)
- [Liskov Substitution Principle](./03-solid-principles/03-liskov-substitution.md)
- [Interface Segregation Principle](./03-solid-principles/04-interface-segregation.md)
- [Dependency Inversion Principle](./03-solid-principles/05-dependency-inversion.md)

### 4. ๐Ÿ—๏ธ Design Patterns

Click to expand Design Patterns topics

#### Creational Patterns
- [Factory Method](./04-design-patterns/01-creational/01-factory-method.md)
- [Abstract Factory](./04-design-patterns/01-creational/02-abstract-factory.md)
- [Builder](./04-design-patterns/01-creational/03-builder.md)
- [Singleton](./04-design-patterns/01-creational/04-singleton.md)
- [Prototype](./04-design-patterns/01-creational/05-prototype.md)

#### Structural Patterns
- [Adapter](./04-design-patterns/02-structural/01-adapter.md)
- [Bridge](./04-design-patterns/02-structural/02-bridge.md)
- [Composite](./04-design-patterns/02-structural/03-composite.md)
- [Decorator](./04-design-patterns/02-structural/04-decorator.md)
- [Facade](./04-design-patterns/02-structural/05-facade.md)
- [Flyweight](./04-design-patterns/02-structural/06-flyweight.md)
- [Proxy](./04-design-patterns/02-structural/07-proxy.md)

#### Behavioral Patterns
- [Chain of Responsibility](./04-design-patterns/03-behavioral/01-chain-of-responsibility.md)
- [Command](./04-design-patterns/03-behavioral/02-command.md)
- [Iterator](./04-design-patterns/03-behavioral/03-iterator.md)
- [Mediator](./04-design-patterns/03-behavioral/04-mediator.md)
- [Memento](./04-design-patterns/03-behavioral/05-memento.md)
- [Observer](./04-design-patterns/03-behavioral/06-observer.md)
- [State](./04-design-patterns/03-behavioral/07-state.md)
- [Strategy](./04-design-patterns/03-behavioral/08-strategy.md)
- [Template Method](./04-design-patterns/03-behavioral/09-template-method.md)
- [Visitor](./04-design-patterns/03-behavioral/10-visitor.md)

### 5. ๐Ÿข Enterprise Patterns

Click to expand Enterprise Patterns topics

- [Repository Pattern](./05-enterprise-patterns/01-repository-pattern.md)
- [Unit of Work](./05-enterprise-patterns/02-unit-of-work.md)
- [Service Layer](./05-enterprise-patterns/03-service-layer.md)
- [Data Mapper](./05-enterprise-patterns/04-data-mapper.md)
- [Active Record](./05-enterprise-patterns/05-active-record.md)
- [Domain Model](./05-enterprise-patterns/06-domain-model.md)
- [Event Sourcing](./05-enterprise-patterns/07-event-sourcing.md)
- [CQRS](./05-enterprise-patterns/08-cqrs.md)
- [Dependency Injection Container](./05-enterprise-patterns/09-dependency-injection-container.md)
- [Dependency Injection vs Container](./05-enterprise-patterns/09a-dependency-injection-explained.md)
- [Specification Pattern](./05-enterprise-patterns/10-specification-pattern.md)
- [Data Transfer Object (DTO)](./05-enterprise-patterns/11-data-transfer-object.md)
- [Lazy Loading](./05-enterprise-patterns/12-lazy-loading.md)
- [Circuit Breaker](./05-enterprise-patterns/13-circuit-breaker.md)
- [Saga Pattern](./05-enterprise-patterns/14-saga.md)
- [Front Controller](./05-enterprise-patterns/15-front-controller.md)
- [Inversion of Control (IoC)](./05-enterprise-patterns/16-inversion-of-control.md)
- [Mediator/Middleware](./05-enterprise-patterns/17-middleware.md)
- [Observer](./05-enterprise-patterns/18-observer.md)
- [Publish-Subscribe](./05-enterprise-patterns/19-pub-sub.md)
- [Adapter/Wrapper](./05-enterprise-patterns/20-adapter.md)

### 6. ๐Ÿงช Code Quality and Standards

Click to expand Code Quality topics

#### Coding Standards
- [Coding Standards Overview](./06-code-quality/01-coding-standards.md)
- [PSR Standards Overview](./06-code-quality/01a-psr-standards.md)
- [PSR-1: Basic Coding Standard](./06-code-quality/01b-psr-1.md)
- [PSR-12: Extended Coding Style](./06-code-quality/01c-psr-12.md)
- [PSR-4: Autoloading Standard](./06-code-quality/01d-psr-4.md)

#### Code Analysis Tools
- [Code Analysis Tools Overview](./06-code-quality/02-code-analysis-tools.md)
- [Static Analysis Tools](./06-code-quality/02-static-analysis.md)
- [Static Analysis with PHPStan](./06-code-quality/02a-phpstan.md)
- [PHP_CodeSniffer (PHPCS)](./06-code-quality/02b-phpcs.md)
- [PHP Mess Detector (PHPMD)](./06-code-quality/02c-phpmd.md)
- [PHP Insights](./06-code-quality/02d-php-insights.md)

#### Testing Practices
- [Testing Practices Overview](./06-code-quality/03-testing-practices.md)
- [Unit Testing with PHPUnit](./06-code-quality/03a-phpunit.md)
- [Test-Driven Development](./06-code-quality/03b-tdd.md)
- [Behavior-Driven Development](./06-code-quality/03c-bdd.md)
- [Mocking and Test Doubles](./06-code-quality/03d-mocking.md)

#### Code Improvement
- [Code Improvement Overview](./06-code-quality/04-code-improvement.md)
- [Refactoring Principles](./06-code-quality/04a-refactoring-principles.md)
- [Common Code Smells](./06-code-quality/04b-code-smells.md)
- [Refactoring Techniques](./06-code-quality/04c-refactoring-techniques.md)

#### Debugging and Profiling
- [Debugging and Profiling Overview](./06-code-quality/05-debugging-profiling.md)
- [PHP Debugging Techniques](./06-code-quality/05a-debugging-strategies.md)
- [Xdebug](./06-code-quality/05b-xdebug.md)
- [Performance Profiling](./06-code-quality/05c-profiling.md)

#### Continuous Integration
- [Continuous Integration Overview](./06-code-quality/06-continuous-integration.md)
- [CI Workflows for PHP](./06-code-quality/06a-ci-workflows.md)
- [GitHub Actions for PHP](./06-code-quality/06b-github-actions.md)
- [Quality Gates](./06-code-quality/06c-quality-gates.md)

## ๐Ÿ“– How to Use This Repository

Click to learn how to best use this resource

1. **Sequential Learning**: Follow the sections in order for a structured learning path
2. **Topic-Based Reference**: Jump to specific topics that interest you or that you need to understand better
3. **Practical Application**: Each topic includes practical code examples you can run and experiment with
4. **Progressive Complexity**: Topics progress from basic to advanced, building on previous concepts

## ๐Ÿ”ง Requirements

- PHP 7.4+ recommended (some examples use PHP 8 features)
- Basic understanding of PHP syntax
- A development environment to run PHP code

## ๐Ÿค Contributing

Contributions to improve examples, fix errors, or add more detailed explanations are welcome. Please feel free to submit a pull request or open an issue.

## ๐Ÿ“„ License

This repository is licensed under the MIT License - see the LICENSE file for details.