PHP:如果我有一个客户类,并且客户可以拥有汽车和发票,并且我希望有单独的汽车和发票类,那么设置它们的最有效方法是什么?
所以,我有三个不同的类:
customer.class.php
customer_car.class.php
customer_invoice.class.php
在三个类之间建立关系/初始化的最佳方法是什么?客户可以拥有汽车或发票。我想保持代码分开,以便易于维护。
$customer = new customer();
$car = $customer->newCar();
$invoice = $customer->newInvoice();
答案 0 :(得分:2)
这只是一个想法,因为它可能是不同的结构,以反映您的业务逻辑......
有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语法进行开发。
答案 1 :(得分:2)
三个类中没有一个完全相关。所以简单的答案就是问题所在。 在客户类中创建两个可以包含汽车类和发票类的变量。
记住在OOP中使用ISA HASA关系,换言之,客户不是汽车或发票,但客户有汽车和发票,因此在两种情况下都与HASA匹配。
客户ISA人员,但您可以从个人班级扩展客户类别。
class customer extends person {
private $invoice; // variable to hold invoice
private $car; // variable to hold car
...
}
DC
答案 2 :(得分:2)
为什么不
$customer = new customer();
$car = new car();
$invoice = new invoice();
$car->SetOwner($customer);
$invoice->SetCustomer($customer);
考虑添加新项目,例如Payment
。您的方法与我的方法需要多少额外工作。这听起来像是一个家庭作业问题,所以我不会拼出来。