Size: a a a

2020 November 27

MW

Maxyc Webber 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');
       }
   }
}
namespace App\DTO;

class PaySettingsDTO
{
   private $storeId;
   private $password;

   public function getStoreId():int
   {
       return $this->storeId;
   }

   public function getPassword():string
   {
       return $this->password;
   }

   public function __construct(array $setting)
   {
       if(empty($setting['store_id'])){
           throw new \InvalidArgumentException('store_id is  empty');
       }
       if(empty($setting['password'])){
           throw new \InvalidArgumentException('password is empty');
       }

       $this->storeId = $setting['store_id'];
       $this->password = $setting['password'];
   }
}
источник

РИ

Роман Игумнов... in Laravel UA
точно. Забыл немного
источник

РИ

Роман Игумнов... in Laravel UA
Спасибо
источник

MR

Maxim Rebitskiy in Laravel UA
Maxyc Webber
namespace App\DTO;

class PaySettingsDTO
{
   private $storeId;
   private $password;

   public function getStoreId():int
   {
       return $this->storeId;
   }

   public function getPassword():string
   {
       return $this->password;
   }

   public function __construct(array $setting)
   {
       if(empty($setting['store_id'])){
           throw new \InvalidArgumentException('store_id is  empty');
       }
       if(empty($setting['password'])){
           throw new \InvalidArgumentException('password is empty');
       }

       $this->storeId = $setting['store_id'];
       $this->password = $setting['password'];
   }
}
А если вообще ключа какого-то нет?)
источник

MR

Maxim Rebitskiy in Laravel UA
Undefiend index получаем?
источник

MW

Maxyc Webber in Laravel UA
Maxim Rebitskiy
А если вообще ключа какого-то нет?)
ну я принцип показал
источник

РИ

Роман Игумнов... in Laravel UA
Maxim Rebitskiy
Undefiend index получаем?
Нет вроде как store_id is empty
источник

РИ

Роман Игумнов... in Laravel UA
или ты про что?
источник

MW

Maxyc Webber in Laravel UA
если у тебя не будет ключа, то будет ошибка
источник

MR

Maxim Rebitskiy in Laravel UA
Роман Игумнов
Нет вроде как store_id is empty
А если store_id нет в массиве?
источник

РИ

Роман Игумнов... in Laravel UA
Maxim Rebitskiy
А если store_id нет в массиве?
Ну а как его не будет то если он уже в сервис провайдере сидит
источник

РИ

Роман Игумнов... in Laravel UA
$this->app->bind(PayPartsInterface::class, function() {
           $settings = new PaySettingsDTO([
                   'store_id' => config('payparts.store_id'),
                   'password' =>  config('payparts.password')
               ]);

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

MR

Maxim Rebitskiy in Laravel UA
Говорили балакали, сіли і заплакали)
источник

AS

Alex Sin 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);
   }
}
какая там ответственность в договоре о неразглашении?
источник

AS

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

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

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

AS

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

MR

Maxim Rebitskiy in Laravel UA
Alex Sin
в параметрах сервиса как раз можно принимать ВО или ДТО, где была валидация (в ДТО по типу хотябы)
Но мы там не рассматривали ДТО или ВО
источник

AS

Alex Sin in Laravel UA
Роман Игумнов
И не страшно совсем))))
могу страшные истории накидать с ютуба, есть пара каналов неплохих
источник

AS

Alex Sin in Laravel UA
Maxyc Webber
А если сделать PaySettingsDTO, то можно там )
проверка на пустоту и выбр эксепшенов в ДТО?
источник

РИ

Роман Игумнов... in Laravel UA
Alex Sin
проверка на пустоту и выбр эксепшенов в ДТО?
выходит что да
источник