View Single Post

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>