Я не могу вам сильно помочь с этой реализацией, однако, принцип такой архитектуры состоит в том, чтобы отделить и абстрагировать слой персистентности. С точки зрения "глупости" , Service Locator (т.е. Depenancy Injection) не имеет ничего общего с принципом Service Layer. Оба служат разным целям. Сервисный локатор (DiC) помогает вам извлекать объект (это может быть сервис, объект конфигурации или все, что вам нужно) из любой точки вашего приложения.
Я не фанат этой статической реализации Service Locator, где я бы предпочел использовать помощник действий.
Но это исключение выдается, потому что вы пытаетесь получить несуществующий «TestService».
ServiceLocator обычно работает с «Контейнером», который устанавливает различные службы.
Убедитесь, что ваш «TestService» правильно настроен в вашем контейнере (это может быть класс PHP, INI, XML или любой другой).
Взгляните на другие службы и попытайтесь понять, как они работают.