我做了一些修改,所以希望有更清楚什麼要問
我工作的一個PHP項目,我在那裏我需要計算總計算總價格的發票基於單個項目的總數。
根據我們的要求,我們要創建一個包含類對象的實例變量,然後使用一個方法遍歷數組並計算總數。
這是我到目前爲止有:InvoiceItem
類使用特定的陣列值
class InvoiceItem {
private $itemId;
private $itemQty;
private $itemPrice;
private $itemDescription;
private $total;
public function __get($attr) {
return $this->$attr;
}
public function __set($attr, $val) {
$this->$attr = $val;
}
public function calculateItemTotal() {
// This method will calculate the total by multiplying the quantity times the price.
$this->total = $this->__get("itemQty") * $this->__get("itemPrice");
}
public function display() {
// This method will generate a String that contains a one-line value for this object.
// It should include all the instance variables and the total for this item.
$display_format = "ID: %s, Quantity: %s, Price: %s, Description: %s, Total: %s<br />";
return sprintf($display_format,$this->__get("itemId"),$this->__get("itemQty"),
$this->__get("itemPrice"),$this->__get("itemDescription"), $this->__get("total"));
}
}
這是我(到目前爲止)在課堂上,我試圖做計算Invoice
class Invoice {
private $items;
private $invoice_total;
public function __construct() {
$this->items = array(new InvoiceItem());
}
// Magic Method Getters/Setters
public function __get($attr) {
return $this->$attr;
}
public function __set($attr, $val) {
$this->$attr = $val;
}
public function calculateInvoice() {
// it's supposed to loop through my array and calculate the invoice total here
}
public function displayInvoice() {
// this is supposed to call the parent 'display()' method to list each InvoiceItem
// call calculateInvoice() and print the $invoice_total
}
}
讀出在最後應該是這樣的:
ID:1,數量:3,價格:5,描述:Foo,總數:15
ID:2,Quanti TY:6,價格:3,說明:酒吧,共有18條
發票總額:33
我知道,有些事情就不是最有效的(蝙蝠),但我想學習先執行它然後再重構。
首先,一個InvoiceItem將「有一個」發票,並且一個發票將「有很多」InvoiceItems,但它們不一定是鏈接的,不應該繼承或擴展 –
@RobbieAverill,我知道一個通常不會,以這種方式繼承。我主要是想弄清楚如何達到目前的要求。我打算重做/學習一次,我可以先學習 – kmancusi
Hi @kmancusi - 如果您堅持使用當前結構,那麼您至少應該更改它,以便InvoiceItem擴展發票而不是其他方式。 –