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