Я как раз собираюсь написать метод преобразования некоторых биллинговых данных в счет-фактуру.
Так что скажите, что у меня есть и массив объектов, содержащих данные, необходимые для создания элементов invocie.
В контроллере биллинга Какой из следующих способов правильный
$invoice = new Invoice(); $invoice->createInvoiceFromBilling($billingItems);
Затем в классе счетов
Public Function createInvoiceFromBilling($billingItems) { $this->data = $billingItems;
ИЛИ
Invoice::createInvoiceFromBilling($billingItems)
Затем в классе счетов
Public Function createInvoiceFromBilling($billingItems) { $invoice = new Invoice(); $invoice->data = $billingItems;
Каким образом это правильный путь?
С уважением
Как указывал Терешко в разделе комментариев выше, вы должны изучить модель Factory . Хороший (и простой) пример на основе реального мира из связанного источника:
<?php class Automobile { private $vehicle_make; private $vehicle_model; public function __construct($make, $model) { $this->vehicle_make = $make; $this->vehicle_model = $model; } public function get_make_and_model() { return $this->vehicle_make . ' ' . $this->vehicle_model; } } class AutomobileFactory { public function create($make, $model) { return new Automobile($make, $model); } } // have the factory create the Automobile object $automobileFactory = new AutomobileFactory(); $veyron = $automobileFactory->create('Bugatti', 'Veyron'); print_r($veyron->get_make_and_model()); // outputs "Bugatti Veyron"
Как вы можете видеть, AutomobileFactory фактически создает экземпляры Automobile.
Метод, написанный первым, лучше, потому что во втором ваш код будет генерировать объект для счета-фактуры каждый раз, когда он вызывается.