-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathsession7.php
More file actions
40 lines (26 loc) · 1006 Bytes
/
session7.php
File metadata and controls
40 lines (26 loc) · 1006 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
declare(strict_types=1);
class SessionSeven
{
public function handle() : void
{
$segments = [
['segment' => 'a', 'basicSalary' => 1000],
['segment' => 'b', 'basicSalary' => 2000],
['segment' => 'c', 'basicSalary' => 3000],
];
$grossSalaryCalculators = array_map(fn ($i) => [
'segment' => $i['segment'],
'MyGrossSalaryCalculator' => $this->grossSalaryCalculator($i['basicSalary']),
], $segments);
echo $grossSalaryCalculators[0]['MyGrossSalaryCalculator'](80).PHP_EOL;
echo $grossSalaryCalculators[1]['MyGrossSalaryCalculator'](90).PHP_EOL;
echo $grossSalaryCalculators[2]['MyGrossSalaryCalculator'](100).PHP_EOL;
}
private function grossSalaryCalculator(float $basicSalary) : Closure
{
$tax = 0.2 * $basicSalary;
return static fn (float $bonus) => $tax + $bonus + $basicSalary;
}
}
(new SessionSeven())->handle();