Сервис-локатор — это шаблон проектирования, который предоставляет централизованный реестр (регистр) сервисов или зависимостей приложения. Он позволяет объектам получать доступ к необходимым сервисам без необходимости знать, где или как эти сервисы были созданы. По сути, это каталог доступных сервисов.
Основные компоненты:
Преимущества:
Недостатки:
Пример простой реализации:
php
Часто сервис-локатор реализуется в виде синглтона для обеспечения глобального доступа, хотя это добавляет свои минусы (глобальное состояние).
В современных PHP-приложениях чаще используется внедрение зависимостей (Dependency Injection) как более предпочтительная альтернатива, поскольку оно делает зависимости более явными и упрощает тестирование. Однако сервис-локатор может быть полезен в определенных сценариях, например, для ленивой загрузки сервисов или интеграции с легаси-кодом.