Search icon CANCEL
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Test-Driven Development with PHP 8

You're reading from   Test-Driven Development with PHP 8 Build extensible, reliable, and maintainable enterprise-level applications using TDD and BDD with PHP

Arrow left icon
Product type Paperback
Published in Jan 2023
Publisher Packt
ISBN-13 9781803230757
Length 336 pages
Edition 1st Edition
Languages
Tools
Arrow right icon
Author (1):
Arrow left icon
Rainier Sarabia Rainier Sarabia
Author Profile Icon Rainier Sarabia
Rainier Sarabia
Arrow right icon
View More author details
Toc

Table of Contents (17) Chapters Close

Preface 1. Part 1 – Technical Background and Setup
2. Chapter 1: What Is Test-Driven Development and Why Use It in PHP? FREE CHAPTER 3. Chapter 2: Understanding and Organizing the Business Requirements of Our Project 4. Chapter 3: Setting Up Our Development Environment Using Docker Containers 5. Chapter 4: Using Object-Oriented Programming in PHP 6. Part 2 – Implementing Test-Driven Development in a PHP Project
7. Chapter 5: Unit Testing 8. Chapter 6: Applying Behavior-Driven Development 9. Chapter 7: Building Solution Code with BDD and TDD 10. Chapter 8: Using TDD with SOLID Principles 11. Part 3 – Deployment Automation and Monitoring
12. Chapter 9: Continuous Integration 13. Chapter 10: Continuous Delivery 14. Chapter 11: Monitoring 15. Index 16. Other Books You May Enjoy

TDD with the Interface Segregation Principle

Interfaces are very helpful, but sometimes it can be very easy to pollute them with capabilities that are not really supposed to be a part of the interface. I used to encounter this violation a lot. I was asking myself how I kept on creating empty methods with to-do comments, only to find classes a few months or years later, still with those to-do comments and the methods still empty.

I used to touch my interfaces first and stuff them with all the methods I thought I needed. Then, when I finally wrote the concrete implementations, these concrete classes mostly had empty methods in them.

An interface should only have methods that are specific to that interface. If there’s a method in there that is not entirely related to that interface, you need to segregate it into a different interface.

Let’s see that in action. Again, let’s start with a – you guessed it right – test:

  1. Open the codebase...
lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at €18.99/month. Cancel anytime