Size: a a a

2020 November 27

РИ

Роман Игумнов... in Laravel UA
Т.е по сути сервис является хорошим местом проверки?
источник

MR

Maxim Rebitskiy in Laravel UA
Роман Игумнов
А я если честно размыто понял где же делать валидацию
Желательно уже в том классе, с которого они далее “не уйдут”
источник

РИ

Роман Игумнов... in Laravel UA
Maxim Rebitskiy
Желательно уже в том классе, с которого они далее “не уйдут”
Ну в моем случаи это сервис класс
источник

MR

Maxim Rebitskiy in Laravel UA
Роман Игумнов
Ну в моем случаи это сервис класс
Возможно.
источник

РИ

Роман Игумнов... in Laravel UA
Всем спасибо за отличный разбор кода! Сделал много выводов
источник

РИ

Роман Игумнов... in Laravel UA
И не страшно совсем))))
источник

MW

Maxyc Webber in Laravel UA
А если сделать PaySettingsDTO, то можно там )
источник

РИ

Роман Игумнов... in Laravel UA
Maxyc Webber
А если сделать PaySettingsDTO, то можно там )
хорошая идея. Нужно попробовать сделать так. Только понять сначала что и как
источник

MW

Maxyc Webber in Laravel UA
делаешь отдельный класс. в нем все настройки.  там же валидация.
передаешь в сервис через конструктор
источник

РИ

Роман Игумнов... in Laravel UA
Maxyc Webber
делаешь отдельный класс. в нем все настройки.  там же валидация.
передаешь в сервис через конструктор
в сервис провайдер?
источник

MW

Maxyc Webber in Laravel UA
public function register()
   {
       $this->app->bind(PayPartsInterface::class, function() {
           $settings = new PaySettings(['store_id'=>config('payparts.store_id'),
               'password'=>config('payparts.password')]);

           return new PayPartsService($settings);
       });
   }
источник

MW

Maxyc Webber in Laravel UA
да мож рано еще и не совсем для твоего проекта делать столько абстракций
источник

MW

Maxyc Webber in Laravel UA
ты главное не запутайся в них. но попробовать обязан
источник

РИ

Роман Игумнов... in Laravel UA
Разве dto обьект подразумевает проверки? Валидацию. Вроде все должно через vo пройти
источник

MW

Maxyc Webber in Laravel UA
ну ок. не дто это. просто класс, в который вынесли проверки и хранение данных
источник

MW

Maxyc Webber in Laravel UA
простой класс с настройками
источник

РИ

Роман Игумнов... in Laravel UA
тогда новый код выглядит так
источник

РИ

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

class PaySettingsDTO
{
   public $setting;

   public function __construct(array $setting)
   {
       $this->setting = $setting;

       if(empty($setting['store_id'])){
           throw new \InvalidArgumentException('store_id is  empty');
       }
       if(empty($setting['password'])){
           throw new \InvalidArgumentException('password is empty');
       }
   }
}
источник

РИ

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

use App\Interfaces\PayPartsInterface;

use PayParts\PayParts;
use App\DTO\PaySettingsDTO;

class PayPartsService implements PayPartsInterface
{
   private $payParts;

   public function __construct(PaySettingsDTO $settings)
   {
       $this->payParts = new PayParts($settings->setting['store_id'], $settings->setting['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
Роман Игумнов
namespace App\DTO;

class PaySettingsDTO
{
   public $setting;

   public function __construct(array $setting)
   {
       $this->setting = $setting;

       if(empty($setting['store_id'])){
           throw new \InvalidArgumentException('store_id is  empty');
       }
       if(empty($setting['password'])){
           throw new \InvalidArgumentException('password is empty');
       }
   }
}
А смысл ДТО если там хранится массив?)
источник