Настройка нескольких классов для представления объектов реального мира - PullRequest
0 голосов
/ 07 января 2010

PHP: Если у меня есть класс клиента, и у клиента может быть машина и счет, и я хочу иметь отдельные классы автомобиля и счета, какой самый эффективный способ их настройки? *


Итак, у меня есть три разных класса:

1008 * customer.class.php *

customer_car.class.php

customer_invoice.class.php

Как лучше всего настроить отношения / инициализацию между тремя классами? У клиента может быть автомобиль или счет. Я хочу, чтобы код был отделен, чтобы его было легко поддерживать.

$customer = new customer();
$car = $customer->newCar();
$invoice = $customer->newInvoice();

Ответы [ 3 ]

2 голосов
/ 07 января 2010

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

Помните, что в ООП используйте отношения ISA HASA, другими словами, клиент не является автомобилем или счетом, но у клиента есть автомобиль и счет, поэтому в обоих случаях он соответствует HASA.

Пользователь ISA клиента, хотя вы можете расширить класс клиента от класса человека.

class customer extends person {
    private $invoice; // variable to hold invoice
    private $car;     // variable to hold car

   ...
}

DC

2 голосов
/ 07 января 2010

почему бы и нет

$customer = new customer();
$car = new car();
$invoice = new invoice();

$car->SetOwner($customer);
$invoice->SetCustomer($customer);

Подумайте о добавлении нового элемента, такого как Payment. Сколько дополнительной работы необходимо с вашим подходом против моего. Это звучит как домашнее задание, поэтому я не буду разбираться в нем.

2 голосов
/ 07 января 2010

Это просто идея, так как она может иметь другую структуру, отражающую логику вашего бизнеса ...

Есть 3 отдельных класса customer, car и invoice.

Customers может обнулить многие cars им.

Customer может иметь от нуля до многих invoices для них.

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.

...