TooManyPublicMethods

Emitted when a class exposes too many public methods, indicating the class has too many responsibilities or a bloated interface.

<?php
class UserService
{
    public function create(): void {}
    public function update(): void {}
    public function delete(): void {}
    public function find(): void {}
    public function findAll(): void {}
    public function authenticate(): void {}
    public function authorize(): void {}
    public function sendEmail(): void {}
    public function resetPassword(): void {}
    public function updateProfile(): void {}
    public function uploadAvatar(): void {}
    public function exportData(): void {}
    // ... more public methods
}

Why this is bad

How to fix

Split by responsibility into focused services:

<?php
class UserRepository
{
    public function find(UserId $id): ?User {}
    public function save(User $user): void {}
    public function delete(User $user): void {}
}

class AuthenticationService
{
    public function authenticate(Credentials $credentials): User {}
    public function resetPassword(Email $email): void {}
}

class UserProfileService
{
    public function updateProfile(User $user, ProfileData $data): void {}
    public function uploadAvatar(User $user, UploadedFile $file): void {}
}

Threshold

Level Public Methods
🍝 Piccolo ≤10
🍝🍝 Medio 11-15
🍝🍝🍝 Grande 16-20
🍝🍝🍝🍝 Mamma Mia! 21+