Dobrý den
nedávno jsem dospěl k bodu, kdy jsem si řekl, že bych se mohl naučit psát MVC, nebo spíše Model2 (jak je ctěná libost) aplikace. Však jsem tu i žádal o nějaké prameny.
Nuže napsal jsem si velmi komplexní aplikaci - kalkulačku, která umí sčítat, odčítat a násobit. Zde předkládám kód a prosím o kritiku, ale nerad bych skončil s brekem pod postelí :-). A ano, vím že je poněkud úsměvné psát to v mvc když by jinak stačily tak 3 řádky. Ale nějak jsem začít musel. Popravdě samotný princip MVC už se mi zdá naprosto zřejmý, jen ho ještě správně implementovat.
index.php:
PHP kód:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
require('model.php');
require('controller.php');
require('view.php');
?>
VIEW
PHP kód:
<p>mvc aplikace - kalkulačka</p>
<a href="index.php?operation=plus">Sčítačka</a>
<a href="index.php?operation=minus">Odčítačka</a>
<a href="index.php?operation=multiplication">Násobička</a>
<?php
$form = <<<FORM
<form action="index.php" method="get">
<input type="hidden" name="operation" value="$op">
<input type="text" name="number1">
<input type="text" name="number2">
<input type="submit" value="Provést výpočet">
</form>
FORM;
if(isset($_GET['operation'])){
echo $form;
}
?>
<p>
<?php echo $choose; ?>
</p>
<p> <?php echo $print_res; ?> </p>
CONTROLLER
PHP kód:
<?php
$print_res = NULL;
if(isset($_GET['operation'])){
$op = $_GET['operation'];
switch($_GET['operation']){
case "plus":
$choose = "Vybrali jste sčítání";
break;
case "minus":
$choose = "Vybrali jste odečítání";
break;
case "multiplication":
$choose = "Vybrali jste násobení";
break;
}
}else{
$op = NULL;
$choose = "Nebyla vybrána operace";
}
if(isset($_GET['number1']) && isset($_GET['number2'])){
$n1 = $_GET['number1'];
$n2 = $_GET['number2'];
$answ = new HardCoreMath($n1, $n2);
switch($_GET['operation']){
case "plus":
$answ->plus();
$print_res = "Výsledek: ".number_format($answ->plus_result, 3 , ',' , ' ');
break;
case "minus":
$answ->minus();
$print_res = "Výsledek: ".$answ->minus_result;
break;
case "multiplication":
$answ->multiplication();
$print_res = "Výsledek: ".$answ->multiplication_result;
break;
}//switch
}
?>
MODEL
PHP kód:
<?php
class HardCoreMath{
public $number1;
public $number2;
function __construct($number1, $number2){
$this->number1 = $number1;
$this->number2 = $number2;
}//__construct
function plus(){
$this->plus_result = $this->number1 + $this->number2;
}//plus
function minus(){
$this->minus_result = $this->number1 - $this->number2;
}//minus
function multiplication(){
$this->multiplication_result = $this->number1 * $this->number2;
}
}//Hard_Core_Math class
?>