Binnen Qlic wordt er voor de custom ERP en CRM vaak gekozen om deze te ontwikkelen met behulp van Laravel. Maar wat is Laravel precies?
Laravel is een open source framework gebaseerd op de MVC structuur, die om de programmeertaal PHP heen is geschreven. Dit framework zorgt ervoor dat een aantal onderdelen van het schrijven van PHP code gemakkelijker wordt gemaakt voor de ontwikkelaars.
MVC staat voor Model, View en Controller. Deze MVC structuur zorgt ervoor dat de data (het model) gescheiden wordt van de logica (de controller) van de applicatie en de views (voorkant) van de applicatie. De basis van de applicatie zijn de controllers. In de controllers worden alle functies van de applicatie afgehandeld zoals bijvoorbeeld het toevoegen, bewerken en inzien van klanten. Elke actie die uitgevoerd kan worden, krijgt zijn eigen functie binnen een controller. Als er bijvoorbeeld een pagina wordt geopend, dan wordt een betreffende controller functie aangesproken. In deze controller wordt de data dan opgehaald, verwerkt en vervolgens getoond in de view aan de gebruiker.
Naast de MVC structuur waarin Laravel opgebouwd is, beschikt Laravel ook over een ORM. ORM staat voor Object Relational Mapping. Door middel van een ORM kan data makkelijker worden uitgelezen uit de database met behulp van de Models uit de MVC structuur. De Models uit de MVC structuur zijn verbonden aan database tabellen. In Laravel kan je door middel van het aanroepen van de Model klasse een query uitvoeren. Bijvoorbeeld:
Product::where(category_id, 1)->get();
In deze voorbeeld query worden alle producten opgehaald die behoren bij de categorie met een ID van 1. Dit zorgt ervoor dat query’s schrijven een stuk eenvoudiger wordt. Echter ontkom je er soms niet aan om een database query handmatig uit te schrijven voor complexe datastructuren.
Om het geheel overzichtelijker te maken wordt gebruik gemaakt van meerdere Models, views en controllers en is er over het algemeen voor elke database tabel, een model en een controller. Hierdoor wordt er onderscheid gemaakt tussen de verschillende resources die beschikbaar zijn en blijft de code overzichtelijker en beter te onderhouden voor als er iets niet goed gaat of er een update naar wensen van de klant moet worden door gevoerd.
Verschillende resources kunnen onderling ook relaties hebben. Een gebruiker van de applicatie kan meerdere producten hebben, terwijl een product ook meerdere gebruikers kan hebben. Dit wordt ook wel een veel op veel relatie genoemd. Daarnaast kan de gebruiker meerdere facturen hebben terwijl een factuur maar bij één bepaalde gebruiker kan horen. Dit komt omdat elke factuur weer anders is. Dit wordt een één op veel relatie genoemd.
Ook deze relaties tussen de database tabellen kunnen worden gedefinieerd in Laravel in de Models waardoor deze ook gemakkelijker toegankelijk zijn. In het model voor de gebruikers wordt de relatie gelegd met het model voor de facturen en andersom wordt dit ook gedaan. Om voor een gebruiker alle facturen op te halen kan in de code de volgende aanroep worden gedaan:
$invoices = $user->invoices;
Dit is praktisch hetzelfde als:
$invoices = Invoice::where(‘user_id’, $user->id)->get()
Bovenstaande code is langer en wordt er een extra query uitgevoerd omdat er geen gebruik wordt gemaakt van ‘Eager Loading’. Dit zorgt voor een langere laadtijd van de betreffende pagina. Wat ‘Eager Loading’ precies inhoudt, wordt in een andere blog behandeld.
Binnen applicaties kan het ook voorkomen dat er acties dubbel uitgevoerd kunnen worden als de applicatie bijvoorbeeld beschikt over een klantgedeelte en een Admin gedeelte of als er vanaf meerdere kanten facturen aangemaakt kunnen worden. Daarvoor kan gebruik worden gemaakt van een zogenoemde Handler. Deze Handler neemt eigenlijk de taak over van de controller, namelijk het verwerken van de input van de gebruikers en dit opslaan in de database. De controller wordt nog steeds aangeroepen. Vervolgens stuurt de controller de input van de gebruiker door naar de Handler. Deze voert zijn taak uit en retourneert aan de controller of zijn actie gelukt is of niet. Vervolgens laat de controller met behulp van de views zien of een actie geslaagd is of niet. Doordat het verwerken van de input in de Handler plaats vind, krijg je in de verschillende controllers geen dubbele code. Bij eventuele wijzigingen in de verwerking wordt zo de kans op fouten geminimaliseerd.
Al met al maakt het ontwikkelen met behulp van Laravel het werk van de backend programmeurs binnen Qlic een stuk gemakkelijker en zorgt dit er tevens voor dat een opdracht van de klant sneller kan worden voltooid.
Patrick Schiphouwer
Qlic