假设在OOP(有益用途)中我想为购物卡上的物品创建账单,我将 Bill 对象传递给篮子的 handleInvoice() 函数(全部用 PHP 编写):
class Basket {
// -- other code
public function handleInvoice( Bill $invoice ) {
$invoice->chargeFor( $this->items );
$invoice->chargeTo( $this->account );
return $invoice->process();
}
}
这里 Bill 类中不需要构造函数,因为目前不存在计费数据。
但是,如果我还想使用相同的 Bill 类来管理早期的发票,我需要一些构造函数从数据库中加载所有计费数据:
class Bill {
private $date;
// --- other stuff
function __construct( $bill_id ) {
$result = mysql( "select * from invoices where id = $bill_id" );
$this->date = $result['date'];
// --- other stuff
}
}
现在我如何“告诉”程序在前一种情况下不应该执行构造函数,而在后一种情况下应该执行?