Kode
<?php
class Base {
private $meters = 0.0;
public function __construct($meters) {
if(is_numeric($meters)) {
$this->setMeters($meters);
} else {
throw new Exception("Input should be numeric.");
}
}
protected function getMeters() {
return $this->meters;
}
private function setMeters($meters = 0.0) {
$this->meters = $meters;
}
}
class MetersToCentimeters extends Base {
public function __construct($meters) {
parent::__construct($meters);
}
public function getCentimeters() {
return $this->getMeters() * 100;
}
}
class MetersToDecimeter extends Base {
public function __construct($meters) {
parent::__construct($meters);
}
public function getDecimeters() {
return $this->getMeters() * 10;
}
}
class MetersToFeet extends Base {
public function __construct($meters) {
parent::__construct($meters);
}
public function getFeet() {
return $this->getMeters() * (1 / 0.3048);
}
}
?>
<!DOCTYPE html>
<head><title>MeterConverter</title></head>
<body>
<form method="post" name="convertionForm" action="">
<input type="text" name="input" <?php if(isset($_POST['input'])) echo ' value="'.$_POST['input'].'"'; ?>>
<select name="convertionType">
<option value="centimeter">Convert to centimeter</option>
<option value="decimeter">Convert to decimeter</option>
<option value="feet">Convert to feet</option>
</select>
<input type="submit" value="Convert">
</form>
<?php
if(isset($_POST['convertionType']) && isset($_POST['input'])) {
$input = $_POST['input'];
switch($_POST['convertionType']) {
case 'centimeter':
$m2cm = new MetersToCentimeters($input);
echo $input . ' meters equals ' . $m2cm->getCentimeters() . ' centimeters.<br>';
break;
case 'decimeter':
$m2dm = new MetersToDecimeter($input);
echo $input . ' meters equals ' . $m2dm->getDecimeters() . ' decimeters.<br>';
break;
case 'feet':
$m2f = new MetersToFeet($input);
echo $input . ' meters equals ' . $m2f->getFeet() . ' feet.<br>';
break;
default:
}
}
?>
</body>
</html>