Большинство фабрик не мои, но иногда новые пишу и я. Для меня не зашквар использовать статику. Вот тебе пример из недавнего моего кода, я был волен не использовать статику, мог запилить одиночку, но я же понимаю, в данном случае объект там не нужен был
<?php
function cTraderSyncContacts()
{
ini_set('memory_limit', '500M');
global $timedate;
$traderService = \Vedisoft\cTrader\cTrader::getService();
if (!$traderService) {
return false;
}
$findUnsync = new \Vedisoft\cTrader\Query\FindUnsync;
$brokerAccounts = $findUnsync->getBrokerAccounts();
$dispatcher = \Vedisoft\cTrader\cTrader::getDispatcher($traderService);
$dispatcher->listen('create', function ($bean, $traderService) {
$request = \Vedisoft\cTrader\cTrader::bind('traderCreateRequest', $bean);
$response = $traderService->create($request);
\Vedisoft\cTrader\cTrader::bind('traderCreateResponse', $response, $bean);
});
$dispatcher->listen('update', function ($bean, $traderService) {
$request = \Vedisoft\cTrader\cTrader::bind('traderUpdateRequest', $bean);
$response = $traderService->update($request);
\Vedisoft\cTrader\cTrader::bind('traderUpdateResponse', $response, $bean);
});
$dispatcher->listen('changepassword', function ($bean, $traderService) {
$request = \Vedisoft\cTrader\cTrader::bind('changepasswordRequest', $bean);
$traderService->changePassword($request['login'], $request['password']);
});
foreach ($brokerAccounts as $brokerAccount) {
$traderService->setContext($brokerAccount);
$dispatcher->dispatchBrokerAccount($brokerAccount);
$errors = $dispatcher->getErrors();
if (empty($brokerAccount->ctrader_sync_event) && !$errors) {
$brokerAccount->ctrader_sync_status = 'done';
}
if ($errors) {
$brokerAccount->ctrader_sync_status = 'error';
}
$brokerAccount->ctrader_sync_date = $timedate->to_display_date_time(gmdate('Y-m-d H:i:s'));
$brokerAccount->ctrader_sync_hash = cTrader::hashIt('traderUpdateRequest', $brokerAccount);
$brokerAccount->ctrader_sync_password_hash = cTrader::hashIt('changepasswordRequest', $brokerAccount);
$brokerAccount->ctrader_sync_description = '';
if ($errors) {
$brokerAccount->ctrader_sync_description = implode("\n", array_filter(array_unique($errors)));
$GLOBALS['log']->fatal($brokerAccount->ctrader_sync_description);
}
$brokerAccount->save();
$dispatcher->flush();
}
return true;
}
Это реально мой код. Я не пересиливал себя когда использовал статику. Так что в данном случае, ты пытаешься решить, что то за меня, а потом сделать на основе этого выводы. Так дела не делаются.
Я уже выше писал, видимо ты не прочитал мою позицию. Мое мнение касалось только Yii, насчет Laravel у меня другое мнение, не положительное, но другое. Ну и возможно "пахнуший" код ты воспринимаешь, как "говнокод", я же подразумеваю это
Код с запашком