2010-01-07 45 views
0

PHP:如果我有一個客戶類,並且客戶可以擁有一輛汽車,發票,我希望有獨立的汽車和發票類,什麼是最有效的設置它們的方法?設置多個類來表示現實世界的對象


所以,我有三個不同的類別:

customer.class.php

customer_car.class.php

customer_invoice.class.php

什麼是最好的如何建立三個類之間的關係/初始化?顧客可以有汽車或發票。我想保持代碼分離,以便易於維護。

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

+1

這是一個很長的標題..... – 2010-01-07 03:27:25

+0

現在等待它在主頁緩存中更新....滴答... – 2010-01-07 03:28:09

+0

@ Chacha102你殺了真棒'標題告訴它所有'標題! >< – 2010-01-07 03:30:35

回答

2

這是因爲它可能是結構不同,以反映你的業務邏輯只是一個想法...

有3個獨立的類customercarinvoice

Customers能可以零到許多cars給他們。

Customer可以有零至多個invoices給他們。

invoice可能屬於且只有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語法開發。

2

這三個類都沒有關聯。所以簡單的答案就是這個問題。 在可容納汽車類和發票類的客戶類中創建兩個變量。

記住內OOP使用ISA HASA關係,換句話說,客戶是不是汽車,也不是發票,但客戶有汽車和發票,以便在兩種情況下它匹配HASA。

客戶ISA人,儘管如此,你可以延長從一個人類的客戶類。

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

    ... 
} 

DC

+1

當然,正如rockola正確地指出一個客戶可以有多個,所以你可以有陣列持有汽車和發票。 – DeveloperChris 2010-01-07 03:24:42

2

爲什麼不

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

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

考慮增加一個新的項目,如Payment。您的方法與我的方法需要多少額外的工作。這聽起來像一個家庭作業問題,所以我不會拼出來。