Backend
MVC-basics PHP
![](/codebase/_assets/api/PHP-logo.png)
Voorkennis
- programmeer-basics, functions, git
- classes, methods, overerven, databases, select en crud-queries
Doel
- introductie op de basis principes van een MVC-framework
- Programmeertaal: PHP of een andere backend-taal
![](/codebase/_assets/api/mvc-concept.png)
Taken:
Voer de code uit volgens “best practice” en eerder geleerde technieken. Deze opdrachten mogen met een basic MVC-framework worden uitgevoerd, dit is te vinden op: GitHub-MVC2022. Dit MVC-project vereist clean-urls Video's met uitleg over basic MVC-werking en staan in de 'bestanden' van het PHP Teams-kanaal (vraag evt om toegang)
Pull het Git-project binnen naar jouw localhost. Zet een database op voor het project en gebruik daarvoor de bijgevoegde sql-file. In de projectmap kan je het bestand app/config/config.ini zijn de database-instellingen voor het project aanpassen naar jouw specifieke situatie. Met de url http://localhost/mvc2022/public wordt de MVC-applicatie getoond. Het standaard account is: admin@app.com met het wachtwoord: password
1. Maak een programma met een werking; * als bezoeker krijg ik een 404-page als ik niet bestaande url's aanroep, zodat ik geïnformeerd ben * als bezoeker krijg ik een 403-page als ik een url's aanroep met onvoldoende rechten, zodat ik geïnformeerd ben * als bezoeker kan ik inloggen, zodat ik beveiligde content kan bekijken * als bezoeker zie ik alleen menu-items die ik kan benaderen, zodat er geen verwarring ontstaat * als bezoeker zie ik alle content-items in het menu onder een dropbox, zodat een overzichtelijke navigatie-bar heb * als bezoeker zie ik een neutraal prettige layout, zodat ik de website blijf bezoeken * als bezoeker kan ik een content-item kiezen, zodat dat ene artikel kan bekijken * als gebruiker kan ik nieuwe content toevoegen, zodat ik de artikelen kan uitbreiden * als gebruiker kan ik nieuwe content verwijderen, zodat ik de verouderde artikelen kan verwijderen * als gebruiker kan ik content wijzigen, zodat ik de artikelen kan aanpassen * als gebruiker wil ik gallery-afbeeldingen kunnen bekijken, zodat ik kan zien welke foto’s er zijn gedeeld door andere gebruikers. * als gebruiker wil ik afbeeldingen kunnen uploaden naar de gallery, zodat kan ik eigen foto’s kan toevoegen aan de gallery.
Het programma heeft de volgende technische eigenschappen:
- correcte routes om de requests van de url op te vangen
- overzichtelijk en goed toegepaste controllers en actions
- in een action worden gegevens op een praktische manier beschikbaar gesteld aan de correcte view
- alle databaseverzoeken worden via een model's uitgevoerd
- alle datainvoer wordt in ieder geval op de backend gevalideerd
- er is slechts één html-structuur die in de layout-file is uitgewerkt
- configureerbare waarden worden centraal opgeslagen in een config-file
- alle nieuwe classes zijn voorzien van namespaces en autoloader-proof
2. Maak een programma met een werking; * als bezoeker wil ik mij kunnen registreren, zodat ik zelf ook toegang krijg tot beveiligde content * kanttekening 1: leeftijdscheck >= 18 jaar * kanttekening 2: er wordt gebruik gemaakt van emailverificatie * meta-tags en seo worden optimaliseert met behulp van services * de naam in de browser-tab wordt bijgewerkt m.b.v. services * het email-account wordt bewaard in de config-file en goed beveiligd
Het programma heeft de volgende technische eigenschappen toegepast:
- middleware
- middleware op routes
- services
- classes in de lib-folder, zoals die voor email, zijn maximaal herbruikbaar en maken gebruik van namespaces
Op te leveren
- aantonen dat het basisproces van MVC-frameworks wordt begrepen
- aantonen dat het gebruik routes wordt begrepen
- aantonen dat gecentraliseerde layouts en gebruik van css-files kan worden toegepast en goed georganiseerd
- aantonen dat het gebruik middleware wordt begrepen
- aantonen dat services wordt begerepen
- aantonen dat het gebruik van abstracte database-verzoeken kan worden toegepast (eloquent alike)
- aantonen dat eigen gemaakte classes op een structurele wijze worden opgeslagen en beschikbaar gesteld via namespaces worden