У меня достаточно случаев, когда в класс нужно встроить TranslatorInterface, KernelInterface, какой-нибудь репозиторий, тогда тот сразу становится ещё одним сервисом (да, так просто). Для определения того, является ли файл допустимым изображением используется список расширений и mimetype из конфигурации, которая находится в базе данных (так надо, обязательно из базы данных, можно вообще отключить, тогда файлы не смогут определиться изображениями), получается ImageDetect так же становится сервисом.
Код:
class Console {
private $kernel;
public function __construct(KernelInterface $kernel) {
$this->kernel = $kernel;
}
public function command($command, $arguments = array()) {
$application = new Application($this->kernel);
$application->setAutoExit(false);
$input = new ArrayInput(array_merge(array('command' => $command), $arguments));
// You can use NullOutput() if you don't need the output
$output = new BufferedOutput();
$application->run($input, $output);
// return the output, don't use if you used NullOutput()
return $output->fetch();
}
}
Для примера. Стоит ли такое называть ConsoleService? Понятия не имею... Получается слишком запутано, PostService и Console находятся в одном каталоге.