2010-01-07 50 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。您的方法与我的方法需要多少额外的工作。这听起来像一个家庭作业问题,所以我不会拼出来。