use не для подключения, он нужен для того, чтобы разделять (неожиданно) пространства имен
да, его используют автолоадеры (композер например), но это уже вопрос к автолоадеру, а не к неймспейсу
в учебнике наверняка речь про автолоадинг есть, вы этому просто решили не уделять внимание и выдрали из контекста фразу
2. guzzle клиент можно из контейнера получить, как и урл ресурса и инжектить в конструктор сервиса RbcParseClient
тогда сможете клиент подменять/оборачивать/мокать и прочее... крч сильно улучшите код
2. Такой код лишний, или через конструктор сущности пилите или через фабрику/фабричный метод, на кой такой огород в сервисе? Иначе каждое изменение публичного интерфейса класса Post будет отражаться на коде данного сервиса Ыыыыы
$post = new Post();
$post->setTitle($currentNewsItem->getTitle());
...
3. метод getItemDate тянет на отдельный объект с методом __invoke() или статичным методом, некий хэлпер-процедура, нечего этому коду делать в сервисе
4. в одном методе и такой код:
$currentNewsItem = new StyleItem($this->dom, $link);
и такой: $post->setTitle($currentNewsItem->getTitle());
То есть идет трансформация, опять лишняя ответственность, вынести в отдельные классы/методы
5. Клиент должен получить информацию только, почему он создает доменные сущности? Нужно разделить получение инфомрации, парсинг, трансформацию и сохранение :)
...
В целом много нарушений SRP, от того и столько нюансов
DeniSidorenko,
у вас с каждым товаром идет категория (ее id и название), может так. получиться, что у двух твоаров есть категория с одинаковым id, но разными названиями (скорее всего не будет, если есть достаточного рода нормализация исходных данных)
При таком случай в массив с категориями с этим id попадет последняя из найденных названий