piszę prosty skrypt do porównywania podobieństw tekstów w oparciu o MVC, bo nigdy niczego wcześniej nie pisałem na tym wzorcu, a chciałbym nabrać jakiegoś obycia z nim. Strona jest następująca: są 2 textarea, guzik i po jego kliknięciu mają się wyświetlić informacje o tych tekstach. Problem polega w tym, że nie wiem, jak przekazać wartości zwracane przez poszczególne metody klasy Model do Widoku, w szczególności, że te wartości mają być drukowane tylko po kliknięciu przycisku, a zgodnie z tym, co czytałem, Kontroler odpowiada za to, co się ma dziać po naciśnięciu przycisku.
Klasa Modelu:
<?php class Model { public $string1; public $string2; public function setString1($string1) { $this->string1 = $string1; } public function setString2($string2) { $this->string2 = $string2; } function computeLeven($string1, $string2) { (...) tutaj algorytm obliczania odległości Levenshteina return $this->resultLeven; } public function computeNWP() { } public function getMaxLength() { } public function getLength_1() { } public function getLength_2() { } public function similarity_1() { } public function similarity_2() { } } ?>
Widok (w pudełku #wynik chciałbym umieścić wspomniane wartości zwracane przez metody Modelu, próbowałem w taki naiwny sposób, ale jest on bez sensu, bo nie ma sprawdzania warunku, czy guzik został kliknięty):
<? include_once("model/Model.php"); ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> (...) </style> </head> <body> <section id="formularz"> <form action="index.php" method="post"> <p id="ciag1"> Tekst 1: </p> <p id="ciag2"> Tekst 2: </p> <p id="stat"> <input type="submit" name="wyslany" value="Porównaj" /> </p> </form> </section> <section id="wynik"> <? $entry = new Model(); ?> Długość pierwszego ciągu: <? echo $entry->getLength_1(); ?> <br />Długość drugiego ciągu: <? echo $entry->getLength_2(); ?> <br />Odległość Levenshteina: <? ?> <br />Najdłuższy wspólny podciąg: <? echo $entry->computeNWP() ?> <br />% NWP w pierwszym ciągu: <? echo $entry->similarity_1(); ?> <br />% NWP w drugim ciągu: <? echo $entry->similarity_2(); ?> </section> </body> </html>
Kontroler:
<?php include_once("model/Model.php"); class Controller { public $model; public function __construct() { $this->model = new Model(); } public function invoke() { { $this->model->setString1($ciag1); $this->model->setString2($ciag2); include("view/View.php"); $this->model->computeLeven($ciag1, $ciag2); $this->model->computeNWP(); $this->model->getMaxLength(); $this->model->getLength_1(); $this->model->getLength_2(); $this->model->similarity_1(); $this->model->similarity_2(); } else { include("view/View.php"); } } } ?>
Uruchomienie całości (index.php):
<?php include_once("controller/Controller.php"); $controller = new Controller(); $controller->invoke(); ?>
Pozdrawiam i proszę o pomoc,
z góry dziękuję.