Minimum price
Suggested price

Last updated on 2018-09-10

About the Book

What Is This Book About

Chapter 1 covers the fundamentals of the object-oriented programming: encapsulation, inheritance, and polymorphism. We will discuss the purpose of abstraction and inheritance, and why you should avoid using inheritance for code reuse. This chapter also covers such language specific features as traits and closures and their role in the object-oriented code. And at the end of the chapter, I will introduce such a powerful tool as Dependency Injection, different types of it and some code smells of its wrong usage.

Chapter 2 is fully devoted to SOLID principles. We will discuss each of them: the main idea behind the principle, how to apply it to your code and some problems that you can face following these principles blindly.

Chapter 3 is an introduction to an object-oriented design. It covers the well knows design principles such as:

  • Tell, don't ask
  • The Law of Demeter
  • Kiss
  • Dry

This chapter also covers some basic anti-patterns that you can meet in the code with poor design.

Chapter 4 opens the topic of the design patterns and composition. We will discuss the difference between inheritance and composition and when each of them is more appropriate to use. This chapter covers such design patterns as State, StrategyAdapter and their comparison with the inheritance approach.

Chapter 5 describes the problem "I don't have the interface that I want." . We will cover situations when we need to make two incompatible interfaces work together and how to reduce the complexity of the subsystem and hide it behind the friendly interface. 

Chapter 6 is about GRASP principles and Responsibility Driven Design. It is often a challenge to choose the right object for a particular job and to decide how the objects should interact with each other. Correct responsibility assignments are the key to a good object oriented design.

Who Is This Book For

This is not a beginner's guide to OOP PHP. We are not going to cover the syntax of classes or the difference between public, protected and private keywords. I assume that you are already familiar with these things. 

I assume that you are familiar with the language itself and have been using it in an object-oriented way for several years. The number of years does not matter. You can have a year of personal study and mastered the art of programming or ten years of maintaining the same application. Anyway, you know the basic concepts of the object-oriented programming, such as encapsulation, inheritance and polymorphism. Likely you have used a few of the modern MVC frameworks and even have studied their source code to go deeper. 

The book is for you if you have left the basics behind some years ago and now feel free in writing complex OOP code. But you always feel that you don't fully understand why things should be in this way, and not differently. Maybe you know what every letter means in the SOLID acronym but have been always curious why strictly following these principles sometimes makes your application even worse than it was before. 

About the Author

Sergey Zhuk
Sergey Zhuk

I've been a developer for over 8 years now, and PHP has almost always been my programming language of choice. Currently, I keep myself as a full-stack developer. Specialize in backend development with PHP.

In a free time, I am writing my own technical blog, making screencasts about asynchronous PHP and contribute to Open Source.

Bundles that include this book

Learning Event-Driven PHP With ReactPHP
ReactPHP for Beginners
3 Books
Suggested Price
Bundle Price

Table of Contents

  • Introduction
  • Fundamentals
    • Bundle Properties With Methods
    • Define A New Type
    • Families Of Related Types
    • Different Types With The Same Behavior
    • Interface vs Abstract Class
    • Traits: Copy-Paste Behavior
    • Making Polymorph
    • Dependency Injection
    • Closure
  • SOLID Principles
    • Singile Responsibility Principle
    • Open/Closed Principle
    • Three Rules to Respect Liskov Substitution Principle
    • Interface Segregation Principle
    • Dependency Inversion Principle
    • Rules Are Made To Be Broken
  • Object-Oriented Design
    • Tell Don’t Ask
    • The Principle of Least Knowledge
    • YAGNI
    • KISS Your Application
    • Don’t Repeat Yourself
    • Antipattern: God Object
    • Antipattern: Poltergeist
    • Singleton: Anti-Pattern Or Not
  • Favor Composition Over Inheritance
    • The Decision Between Inheritance And Composition
    • Replace Conditionals With Composition And Polymorphism
    • More Composition
    • When To Factory
    • Does Static Factory Violate Open-Closed Principle
  • Changing Interface
    • Change Incompatible Interface With Adapter
    • Reduce Complexity With Facade
  • GRASP Principles
    • Creator
    • Information Expert
    • Low Coupling
    • High Cohesion
    • Controller
    • Polymorphism
    • Indirection
    • Protected Variations
    • Pure Fabrication
    • Conclusion

The Leanpub 45-day 100% Happiness Guarantee

Within 45 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

See full terms...

Write and Publish on Leanpub

Authors, publishers and universities use Leanpub to publish amazing in-progress and completed books and courses, just like this one. You can use Leanpub to write, publish and sell your book or course as well! Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks. Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. It really is that easy.

Learn more about writing on Leanpub