Differences
This shows you the differences between two versions of the page.
mvc_1 [2010-12-10 11:05] Joakim Forsgren |
mvc_1 [2017-09-01 14:54] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Model-View-Controller ====== | ||
- | {{: | ||
- | |||
- | Dags att börja diskutera hur man skulle kunna strukturera ett större projekt. | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | |||
- | ==== Ett enkelt ex ==== | ||
- | Här kommer ett enkelt ex på hur man skulle kunna jobba med MVC. Vi kommer att utvidga detta framöver\\ | ||
- | Controllers och Models är i princip fria från HTML, i views har man endast enkel PHP och HTML | ||
- | |||
- | index.php - Denna fil har som enda uppgift att alltid läsa in rätt filer... | ||
- | |||
- | - Hämtar först diverse inställningar, | ||
- | - Kollar över vad som har kommit i $_GET[' | ||
- | - Läser in rätt controller - en controller sköter logiken, skriver aldrig ut något och kommunicerar med olika modeller | ||
- | - Läser in rätt view, en view är till för att visa sidor - har bara enkel PHP och HTML | ||
- | |||
- | <code php> | ||
- | <?php | ||
- | define(' | ||
- | // alla inställnignar och några funktioner | ||
- | include(PATH.' | ||
- | |||
- | // Säkrar upp vad som kommer i $_GET[' | ||
- | (isset($_GET[' | ||
- | (isset($_GET[' | ||
- | |||
- | // läser in rätt controller | ||
- | $controller = PATH . ' | ||
- | if (file_exists($controller)) { | ||
- | include($controller); | ||
- | } else { | ||
- | $session-> | ||
- | } | ||
- | |||
- | // visar HTML med rätt view | ||
- | include(PATH.' | ||
- | $session-> | ||
- | $view = PATH . ' | ||
- | if (file_exists($view)) { | ||
- | include($view); | ||
- | } else { | ||
- | $session-> | ||
- | $session-> | ||
- | } | ||
- | include(PATH.' | ||
- | </ | ||
- | |||
- | Detta är min struktur av filer. Det enda som är gjort är en fungerade inloggning därför är katalogerna forum och user tomma | ||
- | < | ||
- | ├── classes | ||
- | │ ├── model | ||
- | │ │ └── user.php | ||
- | │ └── service | ||
- | │ | ||
- | │ | ||
- | ├── controllers | ||
- | │ ├── indexController.php | ||
- | │ └── loginController.php | ||
- | ├── htdocs | ||
- | │ ├── images | ||
- | │ ├── index.php | ||
- | │ └── style.css | ||
- | ├── include | ||
- | │ └── setup.php | ||
- | └── views | ||
- | ├── foot.php | ||
- | ├── forum | ||
- | ├── head.php | ||
- | ├── index | ||
- | │ └── index.php | ||
- | ├── login | ||
- | │ ├── login.php | ||
- | │ ├── logout.php | ||
- | │ ├── register.php | ||
- | │ ├── sendpassword.php | ||
- | │ └── setpassword.php | ||
- | └── user | ||
- | </ | ||
- | |||
- | ====== Lab - med klasser ====== | ||
- | ==== Krav ==== | ||
- | |||
- | * Ni skall göra ett forum med hjälp av klasser som uppfyller alla krav i lab 5, ni skall utgå ifrån min kod och lägga till det som saknas. | ||
- | * Ni skall använda er av klasserna service_db, model_user och service_session | ||
- | * Ni skall jobba med controller, model och views enligt den metod jag har visat er och som finns i min exempel kod nedan. | ||
- | * Ni skall göra minst en controller (forumController) | ||
- | * Ni skall göra minst en model (model_forum) som bör använda sig av någon av mina klasser.\\ Lämpliga metoder skulle kunna vara:\\ addThread, getThreads, addItem, getItems changeItem, deleteItem mm. | ||
- | * Ni ska göra ett antal views | ||
- | |||
- | Ni får gärna göra om och bygga ut mina klass exempel. | ||
- | |||
- | Ni kan hämta min {{: | ||
- | |||
- | ==== Extrakrav ==== | ||
- | * När man har loggat in skall man kunna ändra sina egna uppgifter och kunna ladda upp en profilbild som skall synas på lämpliga ställen i forumet. (userController + övrigt som man behöver göra) | ||
- | * Man skall kunna se lite mer information om en användare, när den gick med, hur många och vilka trådar den har skapat, hur många inlägg den har skrivit mm. | ||
- | |||
- | Min tabell Users | ||
- | < | ||
- | CREATE TABLE IF NOT EXISTS `lab5_Users` ( | ||
- | `UserID` int(11) NOT NULL AUTO_INCREMENT, | ||
- | `FirstName` varchar(50) NOT NULL DEFAULT '', | ||
- | `LastName` varchar(50) NOT NULL DEFAULT '', | ||
- | `EMail` varchar(50) NOT NULL DEFAULT '', | ||
- | `Password` varchar(50) NOT NULL DEFAULT '', | ||
- | `Deleted` tinyint(1) NOT NULL DEFAULT ' | ||
- | `Admin` tinyint(1) NOT NULL DEFAULT ' | ||
- | PRIMARY KEY (`UserID`), | ||
- | UNIQUE KEY `EMail` (`EMail`) | ||
- | ) ENGINE=MyISAM | ||
- | </ | ||