Gerçek Dünya Nesneleri Temsil Çoklu Sınıfları Kurma

3 Cevap php

PHP: If I have a customer class, and the customer can have a car and an invoice, and I want to have separate car and invoice classes, what is the most efficient way of setting them up?


Yani, üç farklı sınıflar var:

customer.class.php

customer_car.class.php

customer_invoice.class.php

Üç sınıf arasındaki ilişki / başlatma kurmak için en iyi yolu nedir? Bir müşteri, bir araba ya da bir fatura olabilir. Ben onun bakımı kolay, böylece ayrılır kodunu tutmak istiyorum.

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

?

3 Cevap

Here is just an idea as it may be structure differently to reflect your business logics...

3 ayrı sınıfları customer, car ve invoice yazıldı.

Customers Onlara çok cars için sıfır yapabilirsiniz.

Customer invoices bunlara birçok sıfır olabilir.

Bir invoice 1'e ait olabilir ve sadece 1 customer ve birçok 1 olması mümkün cars.

Bir müşteri sınıfın İllüstrasyon:

class Customer 
{
    var $cars = array();
    var $invoices = array();

    function Customer() { }

    function OwnCar($car)
    {
        $cars[] = $car;
    }

    function OwnInvoice($invoice)
    {
        $invoices[] = $invoice;
    }
}

Kullanım İllüstrasyon:

$customerA = new Customer();
$carA = new Car();
$invoiceA = new Invoice($customerA, array($carA));

$customerA->OwnCar($carA);
$customerA->OwnInvoice($invoiceA);

Note: İllüstrasyon kodu PHP5 sözdizimi ile geliştirmeye (ayrıca önerilir) çekinmeyin olabilir PHP4, bulunmaktadır.

neden olmasın

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

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

Böyle Payment gibi, yeni bir öğe ekleyerek düşünmek. Ne kadar ek çalışma mayın vs yaklaşım ile gereklidir. Bu bir ödev sorunu gibi geliyor, o yüzden heceleyerek olmaz.

None of the three classes are related at all. so the simple answer is in the question. Create two variables within the customer class that can hold a car class and an invoice class.

OOP içinde hatırlarsanız diğer bir deyişle müşteri bir araba ne de bir fatura değildir ancak her iki durumda da Hasa eşleşecek şekilde müşteri bir araba ve bir fatura var ISA Hasa ilişkileri kullanabilir.

Böylece bir kişi sınıftan müşteri sınıfını genişletmek olabilir ama müşteri ISA kişi.

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

   ...
}

DC