-
Notifications
You must be signed in to change notification settings - Fork 0
/
lesson4.php
61 lines (50 loc) · 1.5 KB
/
lesson4.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
/**
* task 1 : метод по выставлению счета
*/
// Service/Billing/BillingInterface
interface BillingInterface
{
/**
* Рассчёт стоимости доставки заказа
* @param float $totalPrice
* @return void
* @throws BillingException
*/
public function pay(float $totalPrice): void;
}
// Service/Billing/Transfer/Card
class Card implements BillingInterface
{
/**
* @inheritdoc
*/
public function pay(float $totalPrice): void
{
// Оплата кредитной или дебетовой картой
}
}
// Service/Order/Basket
class Basket {
public function checkout(): void
{
// Здесь должна быть некоторая логика выбора способа платежа
$billing = new Card();
// Здесь должна быть некоторая логика получения информации о скидке
// пользователя
$discount = new NullObject();
// Здесь должна быть некоторая логика получения способа уведомления
// пользователя о покупке
$communication = new Email();
$security = new Security($this->session);
$this->checkoutProcess($discount, $billing, $security, $communication);
}
}
/**
* task 2
*/
// смотрите в файлах
/**
* task 3
*/
// смотрите в файлах