- 1
- 2
- 3
- 4
$needMoreDataWM = ($exchange->getSumTo()->getCurrency()->getSystem()->getModule() == 'WebMoney' || $exchange->getSumFrom()->getCurrency()->getSystem()->getModule() == 'WebMoney') || $this->getRequest()->request->get('user_wmid');
$needMoreDataWM = $needMoreDataWM && !$user->getWmid();
$needMoreDataBank = ($exchange->getSumTo()->getCurrency()->getSystem()->getClass() == 'bank') && !$user->getVat() || $this->getRequest()->request->get('user_vat');
$needMoreData = $needMoreDataBank || $needMoreDataWM || !($user->getFullname() && $user->getPassport()) || $this->getRequest()->request->get('user_fullname') || $this->getRequest()->request->get('user_passport');
Долго гадал, чего это "функции" со знака доллара начинаются.
Одна сплошная магия и не одного слова зачем.
в любом случае такие конструкции надо комментировать хотя бы так >Определяется система платежа, производится проверка, должен ли человек еще данные ввести.
Люди любят копипасту и ненавидят промежуточные переменные. Seems o.k.
Слишком глубокий путь - явный косяк в архитектуре. По-моему так.
Последний только 2 раза вызывается, но вот с $this->getRequest()->request такой косяк имеет место быть. И кешировоть оно никак не может, а вдруг там побочный еффект? ПХП не то, что не станет разбираться в том можно ли соптимизировать или нет, он просто даже не оперирует такими понятиями, там лишь бы до победного конца дотянуть, а как - уже не суть важно.
А так - да, можно было запрос кешировать, только разница была бы небольшой.
Ваш пример, и то, что в исходном говнокоде - абсолютно разные вещи. В цикле, если каждый раз по-новой получать значение массива, по которому идет перебор, то цикл просто во многих случаях работать не будет (нужно же хранить итератор и чтобы то, на что он показывает тоже хранилось, если вы их будете каждый раз по-новой создавать, то либо цикл никогда не сдвинется с первой позиции, либо вообще в астрал уйдет.
Если в ЭТОМ есть ещё и побочные эффекты - проще застрелиться сразу.
Именно. Если где-то появляется такая цепочка вызовов, это значит, что разработка велась снизу-вверх (само по-себе это не очень плохо) и вдобавок без представления, что-же за функционал понадобится в итоге.
Ну или требования менялись.