Страница 1 из 1

Контейнер или объект

Добавлено: 2019.09.10, 14:25
jakiro
Привет коллеги, надеюсь верный раздел. Интересует вопрос:
Как на ваш взгляд предпочтительнее в контроллере, иметь сервис вроде:

Код: Выделить всё

$numbers = $this->counterService->parseNumbers($form->string);
        $m->setNumbers($numbers);

        $letters = $this->counterService->parseLetters($form->string);
        $m->setLetters($letters);

        $count = $this->counterService->getCount($form->string);
        $m->setCount($count);
Строка всегда одна и такая же из формы, или можно просто создать объект парсера:

Код: Выделить всё

	$parser = new Parser($form->string);
	$numbers = $parser->parseNumbers();
        $m->setNumbers($numbers);

        $letters = $parser->parseLetters();
        $m->setLetters($letters);

        $count = $parser->getCount();
        $m->setCount($count);
Или оставить первый вариант и добавить сеттер string?

Re: Контейнер или объект

Добавлено: 2019.09.10, 17:40
samdark
Если парсер один и расширять его не планируется и используется он в одном месте, я бы делал без дополнительных обёрток.

Re: Контейнер или объект

Добавлено: 2019.09.11, 02:10
anton_z
Я думаю что сервис здесь не нужен. Даже если потом вдруг (скорее всего нет), потребуется внедрение Parser, вы всегда сможете сделать фабрику. и зачем строку $form->string в каждый метод Parser::parse*() передавать (второй вариант)? Она же в конструкторе передается.

Re: Контейнер или объект

Добавлено: 2019.09.11, 14:46
jakiro
anton_z писал(а):
2019.09.11, 02:10
Я думаю что сервис здесь не нужен. Даже если потом вдруг (скорее всего нет), потребуется внедрение Parser, вы всегда сможете сделать фабрику. и зачем строку $form->string в каждый метод Parser::parse*() передавать (второй вариант)? Она же в конструкторе передается.
Да вы правы, это была моя опечатка :) Спасибо.