Вы можете создать другой сервис, назовем его MyDataProvider и сделать его доступным только для чтения.Псевдокод:
AppBundle\DataProvider\MyDataProvider:
$myService: '@AppBundle\Service\MyService'
globals:
my_data_provider: '@AppBundle\DataProvider\MyDataProvider'
И затем, только прокси получатели из MyService в MyDataProvider:
class MyDataProvider {
private $myService;
public function __construct(MyService $myService) {
$this->myService = $myService;
}
// proxy allowed methods, use __get(), or anything else you like
public function getWhatever() {
return $this->myService->getWhatever();
}
// deny, throw exception, or don't implement at all
public function setWhatever() {
throw AccessDeniedException
}
}
Что касается предоставления всех других классов с MyService - вы можете добавитьон или только предоставляет помеченные сервисы (как вы заметили, в него должны писать только контроллеры), в зависимости от того, что вам подходит.