Size: a a a

2020 November 27

MW

Maxyc Webber in Laravel UA
Maxim Rebitskiy
А если не через сервис провайдер которому доверяю передаю?
Тогда ты не верно делаешь )
источник

MR

Maxim Rebitskiy in Laravel UA
Maxyc Webber
Тогда ты не верно делаешь )
Почему?
источник

MW

Maxyc Webber in Laravel UA
Сервис не должен знать как создать другой сервис.
источник

MR

Maxim Rebitskiy in Laravel UA
Щас дойду до пк и распишу детальнее свое мнение
источник

YP

Yurii Prudskyi in Laravel UA
охрана отмена, не рассмотрел с телефона
источник

YP

Yurii Prudskyi in Laravel UA
я все еще не уверен, что оно сработает, так как у тебя у сервиса есть зависимость на payParts, судя по коду, что ты кидал до этого. А тут ты ее не передаешь
источник

YP

Yurii Prudskyi in Laravel UA
но мб ты код сервиса тоже изменишь
источник

РИ

Роман Игумнов... in Laravel UA
Yurii Prudskyi
но мб ты код сервиса тоже изменишь
Да я изменил код сервиса
источник

YP

Yurii Prudskyi in Laravel UA
покажешь?
источник

РИ

Роман Игумнов... in Laravel UA
namespace App\Services;

use App\Interfaces\PayPartsInterface;

use PayParts\PayParts;

class PayPartsService implements PayPartsInterface
{
   private $storeId;

   private $password;

   private $payParts;

   public function __construct(string $storeId, string  $password)
   {
       $this->storeId = $storeId;
       $this->password = $password;

       $this->payParts = new PayParts($this->storeId, $this->password);
   }

   public function setOptions(array $options)
   {
       return $this->payParts->setOptions($options);
   }

   public function create(string $method)
   {
       return $this->payParts->create($method);
   }
}
источник

MR

Maxim Rebitskiy in Laravel UA
Maxyc Webber
Сервис не должен знать как создать другой сервис.
Мы сейчас привязались я так понял к Ларавелю. Например та же библиотека (/пакет, не важно) что он исопльзует, не только под Лару сделана. И никто не может гарантировать что в конструктор основного класса будут приходить валидные данные.

Это можно решить: указав строгий тип string, тогда null или другое не передадим.
Но тут мы можем получить пустую строку, что тоже скорей всего нас не устраивает, но скорей всего как и при просто при неправильном ключе сервис к которому мы обращаемся выдаст 401 ошибку.

Вот тут и можно сделать “валидацию”, если мы уже говорим делать ее, и где делать. Потому что в СервисеПровайдере у себя мы сделаем, но если кто-то решит переиспользовать наш “Сервис”, то может уже пропихнуть там и невалидные данные.
источник

MW

Maxyc Webber in Laravel UA
Maxim Rebitskiy
Мы сейчас привязались я так понял к Ларавелю. Например та же библиотека (/пакет, не важно) что он исопльзует, не только под Лару сделана. И никто не может гарантировать что в конструктор основного класса будут приходить валидные данные.

Это можно решить: указав строгий тип string, тогда null или другое не передадим.
Но тут мы можем получить пустую строку, что тоже скорей всего нас не устраивает, но скорей всего как и при просто при неправильном ключе сервис к которому мы обращаемся выдаст 401 ошибку.

Вот тут и можно сделать “валидацию”, если мы уже говорим делать ее, и где делать. Потому что в СервисеПровайдере у себя мы сделаем, но если кто-то решит переиспользовать наш “Сервис”, то может уже пропихнуть там и невалидные данные.
Полностью соглашусь.
источник

MW

Maxyc Webber in Laravel UA
Я ваще на симфони
источник

YP

Yurii Prudskyi in Laravel UA
Роман Игумнов
namespace App\Services;

use App\Interfaces\PayPartsInterface;

use PayParts\PayParts;

class PayPartsService implements PayPartsInterface
{
   private $storeId;

   private $password;

   private $payParts;

   public function __construct(string $storeId, string  $password)
   {
       $this->storeId = $storeId;
       $this->password = $password;

       $this->payParts = new PayParts($this->storeId, $this->password);
   }

   public function setOptions(array $options)
   {
       return $this->payParts->setOptions($options);
   }

   public function create(string $method)
   {
       return $this->payParts->create($method);
   }
}
выглядит рабочим, гж) Можно поспорить с тем, нужен ли тебе тут интерфейс. И нужен ли в принципе сервис. Но это уже кому как нравится
источник

MR

Maxim Rebitskiy in Laravel UA
Я бы переименовал интерфейс наверное)
источник

MR

Maxim Rebitskiy in Laravel UA
Добавил бы к нему Service хотя бы
источник

YP

Yurii Prudskyi in Laravel UA
Maxim Rebitskiy
Мы сейчас привязались я так понял к Ларавелю. Например та же библиотека (/пакет, не важно) что он исопльзует, не только под Лару сделана. И никто не может гарантировать что в конструктор основного класса будут приходить валидные данные.

Это можно решить: указав строгий тип string, тогда null или другое не передадим.
Но тут мы можем получить пустую строку, что тоже скорей всего нас не устраивает, но скорей всего как и при просто при неправильном ключе сервис к которому мы обращаемся выдаст 401 ошибку.

Вот тут и можно сделать “валидацию”, если мы уже говорим делать ее, и где делать. Потому что в СервисеПровайдере у себя мы сделаем, но если кто-то решит переиспользовать наш “Сервис”, то может уже пропихнуть там и невалидные данные.
вероятность получить пустую строку примерно такая же, как и вероятность получить неправильный урл. Так что я обычно ограничиваюсь строгой типизацией
источник

MR

Maxim Rebitskiy in Laravel UA
Yurii Prudskyi
вероятность получить пустую строку примерно такая же, как и вероятность получить неправильный урл. Так что я обычно ограничиваюсь строгой типизацией
Да, я ж так и написал далее.
Но тут вопрос был именно где делать валидацию входящих параметров, если уже решили делать ее.
источник

MG

Mike Gajewski in Laravel UA
- Что доктор выдаёт пациенту в конце колоноскопии?

- Оффер на работу iOS-разработчиком
источник

РИ

Роман Игумнов... in Laravel UA
Maxim Rebitskiy
Мы сейчас привязались я так понял к Ларавелю. Например та же библиотека (/пакет, не важно) что он исопльзует, не только под Лару сделана. И никто не может гарантировать что в конструктор основного класса будут приходить валидные данные.

Это можно решить: указав строгий тип string, тогда null или другое не передадим.
Но тут мы можем получить пустую строку, что тоже скорей всего нас не устраивает, но скорей всего как и при просто при неправильном ключе сервис к которому мы обращаемся выдаст 401 ошибку.

Вот тут и можно сделать “валидацию”, если мы уже говорим делать ее, и где делать. Потому что в СервисеПровайдере у себя мы сделаем, но если кто-то решит переиспользовать наш “Сервис”, то может уже пропихнуть там и невалидные данные.
А я если честно размыто понял где же делать валидацию
источник