PHP framework without leaking abstractions