Skip to content

Conversation

@MissAllSunday
Copy link
Contributor

@MissAllSunday MissAllSunday commented Feb 10, 2026

This PR adds a way to register services as dependencies and migrates ErrorHandler to be served via the Container

Heres a Graph TB for reference on how ErrorHandler is been used and how backward compatibility is achieved by leaving the Original ErrorHandler as a Facade and mark it as deprecated in favor of the new Service. I'm aware original ErrorHandler has some duplicated code for calling the container, however, this is done to maximize backward compatibility.

graph TB
    subgraph "Legacy Code"
        A[Legacy Code Calls]
        A1["ErrorHandler::log()"]
        A2["ErrorHandler::fatal()"]
        A3["ErrorHandler::catch()"]
        A4["new ErrorHandler()"]
    end
    
    subgraph "Facade Layer"
        B[ErrorHandler Class]
        B1[getService Method]
        B2[Static Methods]
    end
    
    subgraph "DI Container"
        C[Container::getInstance]
        D[ServiceProvider]
        E[ServicesList.php]
    end
    
    subgraph "Service Layer"
        F[ErrorHandlerService]
        F1[handleError]
        F2[log]
        F3[fatal]
        F4[catch]
    end
    
    A --> B
    A1 --> B2
    A2 --> B2
    A3 --> B2
    A4 --> B
    
    B --> B1
    B2 --> B1
    
    B1 -->|Try Container First| C
    C --> D
    D --> E
    E -->|Returns Shared Instance| F
    
    B1 -->|Fallback if Container Unavailable| F
    
    F --> F1
    F --> F2
    F --> F3
    F --> F4
    
    style B fill:#e1f5ff
    style F fill:#fff4e1
    style C fill:#e8f5e9
    style A fill:#fce4ec
Loading

Of course arch and folders/naming convention should be subject to modifications to better suit current patterns if needed.

@dragomano
Copy link
Contributor

Examples of two different container implementations to demonstrate just how powerful this thing is. Both versions are fully working:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants