Предполагая, что, как и в OOP (beneficial usage), что я хочу, чтобы создать счет для элементов на торговой карте я прохожу Bill-объект handleInvoice корзины в() - функция (все написано в PHP):Выполнение конструктор да/нет
class Basket {
// -- other code
public function handleInvoice(Bill $invoice) {
$invoice->chargeFor($this->items);
$invoice->chargeTo($this->account);
return $invoice->process();
}
}
Здесь не требуется конструктор в классе 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
}
}
Как я могу «сказать» программу сейчас, что в прежний случай, когда конструктор не должен выполняться, а в дальнейшем он должен?
Возможно иметь два разных конструктора. Тот, который принимает «$ bill_id», а другой - нет. Если для конструктора нет аргумента $ bill_id, вы знаете, что данных еще нет, и он будет использовать 'function __construct()', если есть аргумент $ bill_id, он будет использовать 'function __construct ($ bill_id)' – Prediluted
или вы можете добавить простое условие в конструкторе – satin
, к сожалению, это невозможно в PHP ... – Tom