Так?
class Payment
{
protected $isUrgent = true; // является ли платеж срочным
protected $amount = 0;
public function __construct($amount)
{
$this->amount = $amount;
}
public function getAmount()
{
return $this->amount;
}
// Высчитать включенную в сумму комиссию
public function calculateIncludedCommission()
{
$comission = $this->calculateIncludedCommissionForBigSum();
if (150 > $this->getAmount() - $comission) {
$comission = $this->calculateIncludedCommissionForSmallSum();
}
return $comission;
}
// Высчитать включенную в сумму комиссию для больших сумм
protected function calculateIncludedCommissionForBigSum()
{
$comission = 0;
if ( $this->isUrgent ) {
$comission += 10;
}
$comission += 8;
$percent = 0.01;
$baseSum = round(($this->amount - $comission) / (1 + $percent), 2);
$comission = $this->amount - $baseSum;
return $comission;
}
// Высчитать включенную в сумму комиссию для малых сумм
protected function calculateIncludedCommissionForSmallSum()
{
$comission = 0;
if ( $this->isUrgent ) {
$comission += 10;
}
$comission += 5;
return $comission;
}
}
//////////////////
$payment = new Payment(200);
$comission = $payment->calculateIncludedCommission();
$sum = $payment->getAmount() - $comission;
echo 'Платеж: ', $payment->getAmount(), PHP_EOL;
echo 'Сумма к зачислению: ', $sum, PHP_EOL;
echo 'Комиссия: ', $comission, PHP_EOL;
echo PHP_EOL;
Данный код принимает сумму 200 и вернет:
Платеж: 200
Сумма к зачислению: 180.2
Комиссия: 19.8
P.S.: Названия методов можно придумать и короче. =)