Mikmak PHP
Om een complexe app te maken is het een goed idee met componenten te werken. Elke component staat in voor het volbrengen van een specifieke taak. De Webshop app gebruikt vier componenten die we gaan aanduiden met hun respectievelijke namespaces:
- ModernWays\Dialog
- ModernWays\Mvc
- ModernWays\AnOrmApart
- ModernWays\Webshop
Componenten installeren
De eerste drie componenten kan je downloaden van de Packagist website. Deze componenten gebruik je ad hoc. Je hoeft die niet te wijzigen. De vierde component, de eigenlijke webshop, maken we zelf en kunnen we dus niet van Packagist downloaden.
De component Dialog installeren
De component AnOrmApart installeren
De component Threepenny MVC installeren
De Webshop app aan je project toevoegen
De mappenstructuur
Het Webshop project volgt de regels voor een Composer component. De code wordt in een vendor/modernways/webshop/src map geplaatst. Dus het pad volgt de conventie van Composer vendor/naam van de vendor/naam van de component/src.
Threepenny MVC en An Orm Apart zijn gebaseerd op het concept van de overeenkomst boven de configuratie waar mogelijk. Dit betekent dat, in plaats van te vertrouwen op expliciete configuratie-instellingen, Threepenny MVC en An Orm Apart gewoon ervan uit gaan dat de ontwikkelaars bepaalde conventies zullen volgen bij het bouwen van hun applicaties. De folderstructuur voor Threepenny MVC en An Orm Apart project is een goed voorbeeld van het gebruik van de conventie eerder dan de configuratie. Er zijn drie speciale mappen in het project die overeenkomen met de elementen van het MVC patroon: de Controller, Model, en View mappen. En er is één map met de naam Dal die past in het n-tier patroon van An Orm Apart. Het is in één oogopslag duidelijk wat elk van deze mappen bevat. De figuur De structuur van een Threepenny MVC en An Orm Apart projectfolder is heel duidelijk.

Composer autoload pad instellen
De drie componenten die je met Packagist geïnstalleerd hebt worden automatisch aan het zoekpad voor autoload toegevoegd. Voor de Webshop app moet je zelf opgeven welke namespace overeenkomt met welk pad. Dat doe je in het bestand Webwinkel\vendor\composer\autoload_psr4.php:
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'ModernWays\\Mvc\\' => array($vendorDir . '/modernways/mvc/src'),
'ModernWays\\Dialog\\' => array($vendorDir . '/modernways/dialog/src'),
'ModernWays\\AnOrmApart\\' => array($vendorDir . '/modernways/anormapart/src'),
'ModernWays\\Webshop\\' => array($vendorDir . '/modernways/webshop/src'),
);
Als de componenten met Packagist opnieuw installeert of updatet moet je deze regel opnieuw toevoegen.
Een MVC app maken
Als voorbeeld gebruiken we de entitiet Category.
- Model
- View
- Dal
- Controller
Paragraaf