Differences
This shows you the differences between two versions of the page.
|
mvc_1 [2017-09-01 12:54] |
mvc_1 [2022-07-18 11:20] (current) |
||
|---|---|---|---|
| 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 | ||
| + | </ | ||