Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Как нам обсустроить API отправки #5

Closed
jhaoda opened this issue Feb 21, 2018 · 3 comments
Closed

Как нам обсустроить API отправки #5

jhaoda opened this issue Feb 21, 2018 · 3 comments
Milestone

Comments

@jhaoda
Copy link
Member

jhaoda commented Feb 21, 2018

Предполагается что-то типа:

$api->service->cleanPhone('89012345678');
$api->service->cleanAddress('Красноярск, Добрых Комбайнёров, 587');

$api->orders->create(new InputOrder(...));
$api->orders->find('56445645645');

и так далее.

Корневой класс:

/**
 * @property-read Orders $orders
 * @property-read Service $services
 * @property-read Shipments $shipments
 * ...
 */
class Api
{
    // ...
}

cc @greabock @krylov123

@jhaoda jhaoda added this to the 1.0 milestone Feb 21, 2018
@krylov123
Copy link

Вот какие мысли на данный момент.

$api->orders->create(new InputOrder(...));
$response = $api->orders->find('56445645645');

В принципе, так себе и видел. Стиль довольно простой и понятный, в нем сразу прослеживается структура API. Однако, я набросал дальше и там возникают нюансы.

Например, при редактировании мы будем делать что-то такое:

$response = $api->orders->find('56445645645');
$order = $response->body;

/** а дальше */
$order->courier = false;
$api->orders->edit($order);

/** в то время как интуитивно хочется чего-то вроде */
$order->courier = false;
$order->save();

Можно сделать на манер лары, это выглядело бы так:

$order = new ApiOrder();
//либо
$order = ApiOrder::find('56445645645');

$order->courier = true;
$order->save();

Что проще "считывается" именно для пользователя пакета. Впрочем, можно последний вариант реализовать просто отдельным фасадом.
Но при неподходящей структуре классов фасад может получиться слишком "жирным".

@jhaoda
Copy link
Member Author

jhaoda commented Mar 7, 2018

/** в то время как интуитивно хочется чего-то вроде */
$order->courier = false;
$order->save();

Это пахнет AR'ом, которого хотелось бы избежать.

@krylov123
Copy link

Ну да, люблю все beginner friendly делать, вот прям хлебом не корми.

Но по существу согласен, давайте держаться SOLID. Если у @greabock нет дополнений, то я сюда скину примеры использования всех методов, чтобы проверить что других вопросов не возникает.

Затем можно переходить к файловой структуре и уже начать писать код ))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants