я не гвоорю хранить, я говорю считать.Вы говорите хранить его в сервисе.
Assembler - это сервис уровня приложения. В сервис вы передаете зависимости?Но я просто не видел, чтобы в DTOAssembler передавали сервисы и это меня немного смущает
я не гвоорю хранить, я говорю считать.Вы говорите хранить его в сервисе.
Assembler - это сервис уровня приложения. В сервис вы передаете зависимости?Но я просто не видел, чтобы в DTOAssembler передавали сервисы и это меня немного смущает
На то они и конкретные методы, что по ним всегда понятно, что они делают и где используются. Чтобы легко можно было нужные из них закешировать или как угодно независимо переписать. Думаете, что один метод с сотнями if-ов удобнее?sda писал(а):Получается все создают много конкретных методов в репозиториях и никто не пытается универсализировать репозиторий к единственному методу find?
мы тут как раз if'ы не обсуждалиElisDN писал(а):На то они и конкретные методы, что по ним всегда понятно, что они делают и где используются. Чтобы легко можно было нужные из них закешировать или как угодно независимо переписать. Думаете, что один метод с сотнями if-ов удобнее?sda писал(а):Получается все создают много конкретных методов в репозиториях и никто не пытается универсализировать репозиторий к единственному методу find?
Ну я предположил, что в случае с одним методом они когда-то появятся.zelenin писал(а):мы тут как раз if'ы не обсуждали
Код: Выделить всё
//Customer.php
namespace domain;
use domain/Order;
class Customer {
private $id;
private $name;
private $orders = [];
public function __construct($id, $name, $orders) {
$this->id = $id;
$this->name = $name;
$this->orders = $orders;
}
public function getId() {
return $this->id;
}
public function getName() {
return $this->name;
}
public function getOrders() {
return $this->orders;
}
public function addOrder(Order $order) {
$this->orders[] = $order;
}
}
//Order.php
namespace domain;
class Order {
private $id;
private $customerId;
private $sum;
public function __construct($id, $customerId, $sum) {
$this->id = $id;
$this->customerId = $customerId;
$this->sum = $sum;
}
public function getId() {
return $this->id;
}
public function getCustomerId() {
return $this->customerId ;
}
public function getSum() {
return $this->sum;
}
}
Код: Выделить всё
namespace infrastructure;
use domain\Customer;
use domain\OrderRepositoryInterface;
class CustomerRepository implements \domain\CustomerRepositoryInterface {
public function __construct(OrderRepositoryInterface $orderRepository) {
$this->orderRepository = orderRepository;
}
...
public function add(Customer $customer) {
$stmt = $pdo->prepare("UPDATE customers SET name = :name WHERE id = :id");
$stmt->bindParam(':name', $customer->getName());
$stmt->bindParam(':name', $customer->getId());
$stmt->execute();
$orders = $customer->getOrders();
for($i = 0; $i < count($orders); $i++) {
$this->orderRepository->add($orders[$i]);
}
}
}
namespace infrasturcture;
use domain\Order;
class OrderRepository implements \domain\OrderRepositoryInterface {
...
public function add(Order $order) {
$stmt = $pdo->prepare("UPDATE orders SET sum = :sum, customer_id = :customer_id WHERE id = :id");
$stmt->bindParam(':sum', $order->getSum());
$stmt->bindParam(':customer_id', $order->getCustomerId());
$stmt->bindParam(':id', $order->getId());
$stmt->execute();
}
}