Tredun ohjelmistokehittäjien kurssimateriaaleja
MVC-malli on ohjelmistoarkkitehtuurin käsite, jolla jaotellaan ohjelmistoa eri käytön mukaan eri tasoihin. MVC on lyhennelmä sanoista Model, View ja Controller eli malli, näkymä ja kontrolloija. Tämä malli on pohjana useimmissa moderneissa full stack -ohjelmistoissa eli sellaisissa ohjelmistoissa, joissa on käyttöliittymä eli front end, joka on näkyvä ohjelmiston osa, sekä back end, joka on loppukäyttäjälle näkymätön osa, joka käy keskustelua tietokannan kanssa ja käsittelee ja muokkaa tietoja.
MVC-malli koostuu yksinkertaisimmillaan kolmesta eri osiosta, mutta edistyneemmässä ohjelmistoarkkitehtuurissa osioita voi olla enemmänkin näiden lisäksi.
Model-osio pitää sisällään tietokantaan menevien olioiden mallit ja tietokantayhteydet.
View-osio pitää sisällään verkkosivunäkymät, jotka tulevat käyttäjille selaimessa.
Controller-osio käsittelee käyttäjän tietoja ja välittää niitä sekä View’lle että Model’ille.
Tässä kaaviokuvana MVC-mallin osien toimintaa.

Me tutustumme yhteen esimerkkiin MVC-mallista news-sivuston avulla
Lisää tietokantaan user-tauluun uusi date-tyyppinen kenttä birthday Lisää register.view-tiedostoon uusi date-kenttä, nimellä birthday. Lisää users.php:n addUser-funktioon mukaan birthday parametriksi, data-taulukkoon sekä SQL-lauseeseen. Lisää birthday mukaan userManagement.php:n registerController()-funktioon.
Lisää article-taululle uusi kenttä section (varchar 50) Lisää newArticle.view.php:ssa kovakoodattu select-ohjain uutisosaston valinnalle. Valinnassa vaihtoehdot “Kotimaa”, “Ulkomaat” ja “Viihde”.
Lisää uusi muuttuja $section mukaan article.php:n addArticle-funktiolle. Lisää articleManagement.php:ssa addArticleController()-funktiolle uusi kenttäsi.
Kopioi select-ohjaimesi articles.view.php:lle. Lisää submit-painike sekä näiden ympärille form. Muutetaan articleManagement.php:ssa viewArticlesController()-funktiota
function viewArticlesController(){
$allnews = null;
if (isset($_POST['section'])) {
$section = cleanUpInput($_POST['section']);
$allnews = getSectionArticles($section);
}
else {
$allnews = getAllArticles();
}
require "views/articles.view.php";
}
Lisätään article.php:lle funktio getSectionArticles:
function getSectionArticles($section){
$pdo =connectDB();
$sql = "SELECT * FROM articles WHERE section = ?";
$stm=$pdo->prepare($sql);
$stm->execute(array($section));
$all = $stm->fetchAll(PDO::FETCH_ASSOC);
return $all;
}
Kokeile muuttaa ylä- ja alatunnisteen tekstit. Muuta hieman CSS-tyylitiedostoa haluamallasi tavalla. Voit käyttää myös Google Fonts-fontteja