Пример класса

class ObjectPay{

    private $object\_oid;

    private $pay\_more;

    private $bill;

    public function \_\_construct($object\_oid, $pay\_more)

    {

        $this->object\_oid = $object\_oid;

        $this->pay\_more = $pay\_more;

        MyMajorLib::connectToProcedures();

        $this->bill = PaymentsLib::getUniFinBillDocNoByOID($object\_oid);

    }

    public function isBill()

    {

        return $this->bill;

    }

    public function getBill()

    {

        return $this->bill;

    }

    public function isDoc()

    {

        return PaymentsLib::getDocParams($this->object\_oid);

    }

    public function isApplyToPay()

    {

        return true;

    }

}

class Payments extends AbstractModule{

public function uniPayFormController()

    {

        $this->data['errors'] = [];

        SmartyLib::setTemplateByID(PaymentsConf::$payments\_uni\_pay\_form\_tpl);

        if (!$input\_data = HttpDataLib::getGet('object\_id:ne:oid', 'pay\_more')) { // перенест в класс как статический метод

            $this->data['errors'][] = "Не найдены данные для оплаты.";

            return false;

        }

        $objectToPay = new ObjectPay($input\_data['object\_id'], $input\_data['pay\_more']);

        if ($objectToPay->isBill()) {

            PaymentsLib::redirectToSberbankIfNeeded($objectToPay->getBill());

        }

        if ($objectToPay->isDoc()){

           $this->data['errors'][] = $objectToPay->getDocError();

           return false;

        }

        if ($objectToPay->isApplyToPay()){

            $this->data['errors'][] = $objectToPay->getApplyToPayError();

            return false;

        }

        $this->data['client\_info'] = $objectToPay->getClientInfo();

        $this->data['summ\_to\_pay'] = $objectToPay->getSummPay();

        $this->data['comission\_summ'] =  $objectToPay->getComissionSumm();

        $this->data['pay\_more\_payment\_form'] = $objectToPay->getPaymore();;

        return true;

    }

public function uniPayFormController() // страя функция

    {

        $this->data['errors'] = [];

        SmartyLib::setTemplateByID(PaymentsConf::$payments\_uni\_pay\_form\_tpl);

        if (!$input\_data = HttpDataLib::getGet('object\_id:ne:oid', 'pay\_more')) {

            $this->data['errors'][] = "Не найдены данные для оплаты.";

            return false;

        }

        $pay\_more = $input\_data['pay\_more'];

        MyMajorLib::connectToProcedures();

        $this->data['object\_id'] = $input\_data['object\_id'];

        $user\_id = SessionLib::get("mymajoruser\_id") ?: null;

        //редирект на случай если это счет и он уже зарегистрирован

        if ($is\_bill = PaymentsLib::getUniFinBillDocNoByOID($input\_data['object\_id'])) {

            PaymentsLib::redirectToSberbankIfNeeded($is\_bill);

        }

        //получаем информацию по возможносму счету

        if (!$params = PaymentsLib::getDocParams($input\_data['object\_id']/\*, $user\_id\*/)) { // без пользователя, тк возможна оплата счетов, левыми юзерами!!! // todo: надо бы перенести это все в AJAX, чтобы проверялось в одном месте...

            $error = PaymentsLib::getDocParamsLastError();

            if ($error == "Оплата не возможна. Обратитесь к Вашему менеджеру."){

                $this->data['errors'][] = "Оплата по данной ссылке не возможна. Обратитесь к Вашему менеджеру.";

            }else{

                $this->data['errors'][] = "Объект для оплаты недоступен или находится в резерве";

            }

            return false;

        }

        //доступно ли для оплаты

        if (!$params['IsApplyToPay']) {

            $this->data['errors'][] = "Объект для оплаты недоступен или находится в резерве";

            return false;

        }

        $commission\_summ = PaymentsLib::getCommissionSumm($params["CommissionSumm"], $pay\_more);

        $client\_info = PaymentsLib::getUserInfoByCustomId($params['CustNo']);

        $this->data['client\_info'] = $client\_info;

        $this->data['object\_info'] = $params;

        $this->data['summ\_to\_pay'] = ($pay\_more == self::PAY\_FOR\_LANDROVER) ? self::SUMM\_PAY\_FOR\_LANDROVER\_RUB : $params["Summ"];

        $this->data['comission\_summ'] =  $commission\_summ;

        $this->data['pay\_more\_payment\_form'] = $pay\_more;

        return true;

    }

}