-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcheat-good.php
71 lines (57 loc) · 1.48 KB
/
cheat-good.php
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
class NumberFormatter {
public function format($wage) {
return number_format($wage, 2) . " $";
}
}
class WageCalculator {
public $rate = 23;
public function calculateWage(WorkingHours $hours) {
return $hours->getWorkingHours() * $this->rate;
}
}
class WorkingHours {
private $hours = 0;
public function getWorkingHours()
{
return $this->hours;
}
public function setWorkingHours($hours)
{
$this->hours = $hours;
$this->save();
}
public function save()
{
file_put_contents("hours.db", serialize($this));
}
public static function load()
{
$hours = @unserialize(file_get_contents("hours.db"));
if ($hours) return $hours;
return new static;
}
}
class Employee {
public $name;
private $formatter;
private $calculator;
private $hours;
function __construct($name, NumberFormatter $formatter, WageCalculator $calculator, WorkingHours $hours)
{
$this->name = $name;
$this->formatter = $formatter;
$this->calculator = $calculator;
$this->hours = $hours;
}
function calculatePay()
{
return $this->formatter->format(
$this->calculator->calculateWage($this->hours)
);
}
}
$hours = WorkingHours::load();
$hours->setWorkingHours(12);
$employee = new Employee("Poet", new NumberFormatter(), new WageCalculator(), WorkingHours::load());
echo $employee->calculatePay();