Size: a a a

2021 January 16

В

Владислав in phpGeeks
Алексей Гевондян
везде все не так просто, чел, привыкай)
Тут именно не столь разработка, как поддержка
источник

АГ

Алексей Гевондян... in phpGeeks
так просто - пет проект пильни на гитхаб выложи на хостинг залей. а вот если тебе нужен бизнес - то это уже дело...
источник

В

Владислав in phpGeeks
Алексей Гевондян
так просто - пет проект пильни на гитхаб выложи на хостинг залей. а вот если тебе нужен бизнес - то это уже дело...
Вот и да) с бизнесом дела сложнее обстоят
источник

В

Владислав in phpGeeks
Владислав
Вот и да) с бизнесом дела сложнее обстоят
Ибо не для забавы ради
источник

RB

Red Black in phpGeeks
О, про бизнес, интересно...
источник

П

Прогер13 in phpGeeks
Переслано от Прогер13
Есть кто в электронных измерениях разбираются?
источник

АГ

Алексей Гевондян... in phpGeeks
Прогер13
Переслано от Прогер13
Есть кто в электронных измерениях разбираются?
@it_chats еще кого-нибудь поищи
источник

П

Прогер13 in phpGeeks
Алексей Гевондян
@it_chats еще кого-нибудь поищи
Мощно.
источник

in phpGeeks
Всем привет, никак не могу решить проблему. У меня в конструкторе обязательно должны быть переменные $walletId и $password, так как потом они во всех методах классах используются, и эти данные нужно передавать при создании нового класса. Проблема в том, что хочу заинжектить SerializeInterface $serialize, но потом, при создании класса конечно же нужно будет передавать этот объект третьим аргументом, чего я делать крайне не хочу. Пришла в голову только такая идея, которую выделил на скрине, мне не нравится, как это выглядит, но пока других идей у меня нет. Есть ли какой-то вариант получше, для решения этой проблемы? Заранее спасибо.

Скриншот не могу загрузить, поэтому ссылка:
https://ibb.co/4JkLP10
источник

FL

First Last in phpGeeks
Всем привет, никак не могу решить проблему. У меня в конструкторе обязательно должны быть переменные $walletId и $password, так как потом они во всех методах классах используются, и эти данные нужно передавать при создании нового класса. Проблема в том, что хочу заинжектить SerializeInterface $serialize, но потом, при создании класса конечно же нужно будет передавать этот объект третьим аргументом, чего я делать крайне не хочу. Пришла в голову только такая идея, которую выделил на скрине, мне не нравится, как это выглядит, но пока других идей у меня нет. Есть ли какой-то вариант получше, для решения этой проблемы? Заранее спасибо.

Скриншот не могу загрузить, поэтому ссылка:
https://ibb.co/4JkLP10
Или я с просонья такой тупой, или ты прям вообще нифига не понятно написал
источник

FL

First Last in phpGeeks
А во все...если ты выносишь в конструктор прокидывание serializer , то тебе это не нравится
источник

FL

First Last in phpGeeks
1) А что там делает serializer?
2) У тебя реализация на чистом пхп?
источник

in phpGeeks
First Last
Или я с просонья такой тупой, или ты прям вообще нифига не понятно написал
Никто не тупой :)

Я пишу API клиент для одного сервиса. Ответ приходит в JSON, а я не хочу просто передавать чистый массив из Response, а хочу преобразовать его в объект через Serializer.

Мой клиент объявляется следующим образом: new WalletAPI($walletId, $password).

Так вот, в моем файле клиента нужно в каждом методе делать следующее, перед тем как дать юзеру готовый объект (вместо массива  или из API):

$serializer = SerializerBuilder::create()->build();
$serializer->deserialize($$response->toArray());

Мне не нравится, как это выглядит, поэтому я хотел объявить SerializeInterface в конструкторе, чтобы не писать лишнюю строчку кода в каждом методе, чтобы можно было вызвать метод так:

$this->serializer->deserialize($$response->toArray());


Но если делать так, то юзеру придётся вместе с инициализацией класса WalletAPI передавать в конструктор третий аргумент Serialize, что неправильно. Вот, ищу способ, как это можно обойти...

Извиняюсь, если непонятно написал. Использую этот Serialize: https://jmsyst.com/libs/serializer
источник

FL

First Last in phpGeeks
Никто не тупой :)

Я пишу API клиент для одного сервиса. Ответ приходит в JSON, а я не хочу просто передавать чистый массив из Response, а хочу преобразовать его в объект через Serializer.

Мой клиент объявляется следующим образом: new WalletAPI($walletId, $password).

Так вот, в моем файле клиента нужно в каждом методе делать следующее, перед тем как дать юзеру готовый объект (вместо массива  или из API):

$serializer = SerializerBuilder::create()->build();
$serializer->deserialize($$response->toArray());

Мне не нравится, как это выглядит, поэтому я хотел объявить SerializeInterface в конструкторе, чтобы не писать лишнюю строчку кода в каждом методе, чтобы можно было вызвать метод так:

$this->serializer->deserialize($$response->toArray());


Но если делать так, то юзеру придётся вместе с инициализацией класса WalletAPI передавать в конструктор третий аргумент Serialize, что неправильно. Вот, ищу способ, как это можно обойти...

Извиняюсь, если непонятно написал. Использую этот Serialize: https://jmsyst.com/libs/serializer
Да теперь все понятно
источник

FL

First Last in phpGeeks
Правда, я не понимаю причем тут serializer, точнее, зачем он?

1) Ты делаешь запрос
2) Ты получаешь ответ на запрос
3) Исходя из того, откуда был получен запрос ты создаешь определенную дто

Зачем здесь serializer?
источник

FL

First Last in phpGeeks
Представь если у тебя будет, например, 30 эндпоинтов и для каждого у тебя свое дто которое отображает Response
И в каждом дто ты будешь повторять один и тот же код для serialize

Звучит не логично, правда?
Сразу намекает на то, что это нужно вынести
источник

in phpGeeks
First Last
Правда, я не понимаю причем тут serializer, точнее, зачем он?

1) Ты делаешь запрос
2) Ты получаешь ответ на запрос
3) Исходя из того, откуда был получен запрос ты создаешь определенную дто

Зачем здесь serializer?
Хм, об этом я не подумал...

Просто Serializer получает в качестве аргумента класс, в который будет преобразоваться, поэтому формально код будет повторяться, но фактически нет, если я правильно понимаю.

Значит, правильней будет создать DTO и Factory, и в соответствующем методе вызывать соответствующую Factory, которая возвращает объект DTO?
источник

FL

First Last in phpGeeks
источник

FL

First Last in phpGeeks
Ты если хочешь упростить или сделать магию, то можешь сделать что-то типа
public interface GetRequest {
 public function queryParams(): string;
}

public interface ApiResponse {
 public function fromJson(): ApiResponse;
}

function makeGetRequest(GetRequest $request, ApiResponse $response) {}
источник

FL

First Last in phpGeeks
First Last
Ты если хочешь упростить или сделать магию, то можешь сделать что-то типа
public interface GetRequest {
 public function queryParams(): string;
}

public interface ApiResponse {
 public function fromJson(): ApiResponse;
}

function makeGetRequest(GetRequest $request, ApiResponse $response) {}
И исходя из этого, ты можешь херачить кучу разных запросов и ответов.
Единственное, придется чуть-чуть магии добавить чтобы прям вообще красиво жить было
На выходе получишь динамические response и request
источник