PHP: Если у меня есть класс клиентов, и у клиента может быть машина и счет-фактура, и я хочу иметь отдельные классы автомобилей и счетов, что является наиболее эффективным способом их настройки?
Итак, у меня есть три разных класса:
customer.class.php
customer_car.class.php
customer_invoice.class.php
Какой лучший способ настроить отношения/инициализацию между тремя классами? У клиента может быть автомобиль или счет-фактура. Я хочу, чтобы код был разделен, чтобы его было легко поддерживать.
$customer = new customer();
$car = $customer->newCar();
$invoice = $customer->newInvoice();
?
Вот только идея, поскольку это может быть структура по-разному, чтобы отразить вашу бизнес-логику...
У вас есть 3 отдельных класса customer
, car
и invoice
.
Customers
может иметь значение 0 для многих cars
для них.
customer
может иметь для них значение 0 для многих invoices
.
An invoice
может принадлежать 1 и только 1 customer
и может иметь от 1 до многих cars
.
Иллюстрация класса клиента:
class Customer
{
var $cars = array();
var $invoices = array();
function Customer() { }
function OwnCar($car)
{
$cars[] = $car;
}
function OwnInvoice($invoice)
{
$invoices[] = $invoice;
}
}
Иллюстрация использования:
$customerA = new Customer();
$carA = new Car();
$invoiceA = new Invoice($customerA, array($carA));
$customerA->OwnCar($carA);
$customerA->OwnInvoice($invoiceA);
Примечание: Код иллюстрации находится на PHP4, где вы можете чувствовать себя свободно (также рекомендуется) для разработки с помощью синтаксиса PHP5.
почему не
$customer = new customer();
$car = new car();
$invoice = new invoice();
$car->SetOwner($customer);
$invoice->SetCustomer($customer);
Подумайте о добавлении нового элемента, например Payment
. Сколько потребуется дополнительной работы с вашим подходом и моим. Это звучит как проблема с домашней работой, поэтому я не буду описывать ее.
Ни один из трех классов не связан вообще. так что простой ответ в этом вопросе. Создайте две переменные в классе клиентов, которые могут содержать класс автомобиля и класс счета.
Помните, что в OOP используются отношения ISA HASA, другими словами, клиент не является автомобилем или счетом, а у клиента есть автомобиль и счет-фактура, поэтому в обоих случаях он соответствует HASA.
Клиент ISA-клиента, хотя вы можете расширить класс клиентов из класса person.
class customer extends person {
private $invoice; // variable to hold invoice
private $car; // variable to hold car
...
}
DC