PHP en JavaScript zijn allebei scripttalen die veel worden gebruikt door webdevelopers. Maar de beide talen hebben hun eigen nuances en ideale use cases.
In dit artikel bekijken we de verschillen tussen de twee, en wanneer welke taal de beste keuze is voor jouw project.
We beginnen eerst met het ontstaan van beide programmeertalen om wat meer te weten te komen over hun geschiedenis.
Kijk je liever de videoversie?
PHP of JavaScript: het begin
PHP is een open source taal die in 1995 ontwikkeld is door Rasmus Lerdorf. De naam staat voor Personal Home Page Tools – een aantal scripts die Rasmus gebruikte om bezoekers op zijn website te volgen.
Sinds de lancering van PHP 3.0 heeft de taal nu een dubbele afkorting: PHP: Hypertext Preprocessor, maar staat nu vooral gewoon bekend als PHP.
JavaScript bestaat sinds 1995 en is ontwikkeld door Brendan Eich van Netscape om interactiviteit op het web te kunnen bieden. Het stond van origine bekend als Mocha, maar de naam werd veranderd naar eerst LiveScript en vervolgens JavaScript, om mee te kunnen liften op de populariteit van de programmeertaal Java.
Tegenwoordig is de officiële naam van JavaScript ECMAScript, maar haast iedereen noemt het nog gewoon JavaScript.
Beide talen bestaan dus al eventjes, zeker voor internettalen.
Maar wat zijn de overige overeenkomsten?
PHP en JavaScript: Overeenkomsten
Taaltype
PHP en JavaScript zijn beide scripttalen. Dat is dus iets anders dan ‘pure’ programmeertalen zoals Java of C++.
Het verschil is dat scripttalen meestal geïnterpreteerd worden, in plaats van gecompileerd. Dit betekent dat een externe tool ze in machinetaal omzet, in plaats van de software zelf. Dit heeft een impact op de runtime.
Zie het zo: stel dat je een webpagina wil vertalen van je eigen taal naar Navajo. Als je geen Navajo spreekt heb je een vertaler nodig die je hierbij helpt, waardoor het vertalen langer duurt.
Dit is dan ook de reden dat gecompileerde talen meestal sneller uitgevoerd kunnen worden dan geïnterpreteerde talen.
Type variabelen
Een andere overeenkomst is dat PHP en JavaScript allebei licht getypeerd worden, oftewel ‘weakly typed’.
Dat houdt in dat wanneer je een variabele aanmaakt in één van deze talen, je het datatype niet per se hoeft te definiëren: er wordt standaard een type aangenomen.
Daarom kan je het volgende in PHP schrijven:
$x = 'Hello world';
$y = 'Bonjour le monde';
Of in JavaScript:
var x = 'Coding is fun';
let y = 'No, honestly';
In beide talen worden deze variabelen automatisch herkend als strings (een verzameling karakters).
Dit is anders bij sterk getypeerde of ‘strongly typed’ talen zoals Java, waar je moet aangeven welk type variabele je gebruikt zodra je deze aanmaakt:
int x = 5;
Zowel PHP als JavaScript worden dynamisch getypeerd, oftewel, je kan het type eenvoudig veranderen door een nieuw type te definiëren in je code:
$x = 5;
In PHP is $x voortaan een integer.
x = 3.14195;
In JavaScript is x nu een getal.
Aangezien types niet expliciet gedefinieerd hoeven te worden in PHP en JavaScript, moet je functies gebruiken om te vertellen welk soort datatype je mee werkt.
JavaScript heeft de typeof functie om dit te doen.
PHP heeft de gettype functie om het type van een variabele weer te geven. Een nieuwe, verbeterde versie van gettype is get_debug_type, een functie die onderdeel is van de PHP 8 release.
Classes en objecten
PHP en JavaScript waren van origine allebei geen objectgeoriënteerde talen. Objectoriëntatie is pas later in de ontwikkeling toegevoegd.
De mogelijkheid om objecten en classes te maken is in PHP 5 geïntroduceerd, in 2004.
JavaScript is objecten en classes pas veel later gaan gebruiken. Ze werden pas in 2015 in de taal geïntroduceerd, bij ES6.
Een class is een algemene groepering van objecten.
Een object is een entiteit met bepaalde eigenschappen (properties) en methoden (methods).
Het spel Dungeons and Dragons (D&D) is hier een goede vergelijking voor.
Het karakter van een speler is te vergelijken met een object. Elk karakter hoort bij een class of klasse, zoals Barbarian, Rogue of Wizard.
Objecten kunnen zoveel eigenschappen hebben als je wil definiëren.
De eigenschappen van een karakter kunnen dus bijvoorbeeld zijn:
- naam
- ras
- vaardigheden (Strength, Intelligence, Wisdom, Dexterity, Constitution, en Charisma)
- Persoonlijkheid (zoals rustig, nieuwsgierig, brutaal)
- Loyaliteit (rechtvaardig, chaotisch, slecht, goed)
Je kan objectmethoden gebruiken om informatie over een object op te halen.
Dit is de PHP code voor een class en object definitie:
<?php
class Sorcerer {
// Define properties
public $name;
public $race;
public $intelligence;
// Constructor function for the object
// takes 3 arguments, name, race and intelligence
function __construct($name, $race, $intelligence) {
$this->name = $name;
$this->race = $race;
$this->intelligence = $intelligence;
}
# Define object methods
// Get the name
function get_name() {
return $this->name;
}
// Get the race
function get_race() {
return $this->race;
}
// Get intelligence
function get_intelligence() {
return $this->intelligence;
}
} // end Sorcerer class
// Create a Sorcerer
$yensid = new Sorcerer("Yen Sid", "Human", 18);
# Output the object properties in the browser
echo $yensid->get_name();
echo "<br>";
echo $yensid->get_race();
echo "<br>";
echo 'Intelligence: ';
echo $yensid->get_intelligence();
?>
Wanneer je deze code toevoegt aan een HTML bestand, zal de browser het volgende moeten laten zien:
Yen Sid
Human
Intelligence: 18
Je kan ook methoden definiëren voor de acties die je objecten moeten uitvoeren, of moeten ondergaan.
In D&D kan dat bijvoorbeeld zijn:
- surpriseAttack()
- disarmTrap()
- castSpell()
- resistPoison()
Wanneer een methode wordt uitgevoerd op een object, kan de uitkomst afhangen van de eigenschappen van een object. Een object met de class sorcerer apprecentice (tovenaarsleerling) kan bijvoorbeeld minder effectief vervloekingen uitvoeren dan een object dat een ervaren tovenaar voorstelt.
Marktbehoefte
Iets anders dat PHP en JavaScript delen is dat developers voor beide talen erg gewild zijn.
Developers die JavaScript en PHP gebruiken kunnen ook rekenen op een behoorlijke vergoeding.
In de VS verdienen ze gemiddeld $80.000 per jaar.
Documentatie
Het minder goede nieuws voor beginners in PHP of JavaScript is dat de officiële documentatie van beide talen niet erg gebruiksvriendelijk is. De documentatie richt zich meer op ervaren developers dan op beginners.
Je kan de documentatie voor de verschillende scripttalen hier vinden:
JavaScript docent Chris Ferdinandi heeft regelmatig kritiek op de slechte documentatie van JavaScript, en zegt dat het één van de redenen is dat het voor hem erg lang duurde voordat hij de taal volledig beheerste.
Na zoveel overeenkomsten vraag je je inmiddels wellicht af: “Maar wat zijn de verschillende tussen PHP en JavaScript?” Dat zijn er eigenlijk vrij veel.
Wat zijn de verschillen tussen PHP en JavaScript?
Server-side vs client-side scripting
PHP is een server-side scripttaal. Dit betekent dat het op de webserver uitgevoerd wordt, niet op de computer van de client.
Server-side programmeren is voor erg handig voor het afleveren van dynamische content (meestal uit een database) aan gebruikers, zoals een persoonlijk welkomstbericht (“Hallo Claire!”) wanneer een gebruiker inlogt.
Server-side scripting wordt ook veel gebruikt voor e-commerce. Er zijn bijvoorbeeld meer dan 100 WooCommerce extensies die verbinding via API’s (Application Programming Interface) maken met verschillende betalingsproviders om betalingen te kunnen verwerken.
JavaScript daarentegen is een client-side taal, dus het wordt uitgevoerd op de laptop, telefoon of tablet van de eindgebruiker.
JavaScript kan de Document Object Model (DOM) bewerken, wat je kan zien als een soort boom-model dat zich vormt op basis van de HTML van een webpagina.
Als je wel eens een accordeon-menu of -schakelaar hebt gezien, bijvoorbeeld als onderdeel van een FAQ plugin, dan heb je client-side JavaScript al bezig gezien. Wanneer je op een vraag klikt of drukt zullen de JavaScript event handlers de CSS eigenschappen voor weergave aan- of uitschakelen, waardoor je het bijbehorende antwoord verbergt of toont.
Frontend vs Backend
PHP wordt uitgevoerd in de back-end van de website, het deel dat de bezoeker nooit ziet. In WordPress betekent dit dat PHP al het werk op de webserver uitvoert en binnen de WordPress admin.
JavaScript werd traditioneel op de front-end uitgevoerd, maar dat veranderde toen in 2009 Node.js werd gelanceerd, wat een uitvoeringsomgeving voor de back-end is. Daarom is JavaScript tegenwoordig echt een full stack taal.
Combinatie met andere talen
PHP is als back-end taal onderdeel van de populaire LAMP stack (Linux, Apache, MySQL, PHP).
PHP kan samengevoegd worden met HTML. Je ziet dit wanneer je de code voor allerlei webapps gaat bekijken, waaronder ook WordPress.
Dit is bijvoorbeeld het index.php bestand van het Twenty Twenty thema:
<header class="archive-header has-text-align-center header-footer-group">
<div class="archive-header-inner section-inner medium">
<?php if ( $archive_title ) { ?>
<h1 class="archive-title"><?php echo wp_kses_post( $archive_title ); ?></h1>
<?php } ?>
<?php if ( $archive_subtitle ) { ?>
<div class="archive-subtitle section-inner thin max-percentage intro-text"><?php echo wp_kses_post( wpautop( $archive_subtitle ) ); ?></div>
<?php } ?>
</div><!-- .archive-header-inner -->
</header><!-- .archive-header -->
Maar wanneer je PHP met andere backend talen mixt in webapps, wordt het aanzienlijk lastiger alles goed te onderhouden. Daarnaast moet je niet alleen goed PHP beheersen, maar ook de andere talen.
JavaScript developers hebben in die zin wat meer vrijheid in het schrijven van hun code. Ze kunnen de taal gebruiken in combinatie met HTML, XML en Ajax.
Hoofdlettergevoeligheid
Hoofdlettergevoeligheid (of case sensitivity) is het verschil tussen hoofdletters en kleine letters bij het benoemen van entiteiten binnen de taal.
PHP is gedeeltelijk gevoelig voor hoofdletters. Voor sommige zaken maakt het uit of je hoofdletters gebruikt, en voor andere helemaal niet.
Zo zijn PHP variabelen bijvoorbeeld wel hoofdlettergevoelig.
Als je dus een variabele in PHP aanmaakt:
$dog = "chihuahua";
en vervolgens de waarde uit $DOG probeert te halen verderop in de code, zal het niet werken.
PHP functies daarentegen zijn niet hoofdlettergevoelig.
Maak je bijvoorbeeld deze functie in PHP:
function dogFetch() {
// your code to run when the function is called
}
en je roept vervolgens DogFetch() aan in je code, dan zal de functie nog gewoon uitgevoerd worden.
Maar aangezien het inconsistent wordt, is het wel een slechte gewoonte.
JavaScript daarentegen is volledig hoofdlettergevoelig. De variabelen beagle, BEAGLE en Beagle zijn dus allemaal verschillende variabelen.
Syntax
De syntax van een taal is de set regels die de taal organiseert. Dus bijvoorbeeld regels voor de woordvolgorde, grammatica en leestekens.
In het Engels zeg je bijvoorbeeld:
Ik at mijn soep langzaam op.
Maar als je Yoda bent, zou je zeggen:
Mijn soep langzaam ik opat..
Waarom? Omdat de syntax anders is. Het zijn precies dezelfde woorden, maar in een andere volgorde.
Sommige talen gebruiken woorden die er hetzelfde uitzien, maar een andere betekenis hebben.
Alhoewel mensen over het algemeen flexibel zijn wanneer iemand een verkeerd woord gebruikt, nemen computers alles vaak erg letterlijk op. Maak je een fout in de syntax van je code, dan snapt een computer meteen niet meer wat je bedoelt, en krijg je dus een foutmelding.
Bij JavaScript en PHP wordt er een dubbele slash gebruikt voor opmerkingen van één regel:
// This is a comment
Maar PHP heeft ook nog een andere manier voor opmerkingen:
# This is a comment
Probeer je deze PHP syntax voor opmerkingen te gebruiken in JavaScript, dan krijg je een fout:
# This is a Comment
Uncaught SyntaxError: private fields are not currently supported
Andere syntaxfouten komen vaker voor bij JavaScript en PHP, zoals:
- Het missen van een puntkomma ( ; ) aan het einde van een regel.
- Geen krulhaken {} gebruiken voor voorwaardelijke statements.
Definities voor variabelen en constanten
Zoals we eerder gezien hebben, gebruiken JavaScript en PHP andere manieren om variabelen te definiëren.
En dit geldt ook voor constanten.
JavaScript gebruikt deze syntax:
const x = 6;
Bij een eenvoudige constante zoals deze, kan de waarde later niet meer gewijzigd worden.
PHP gebruikt daarentegen de define() functie voor constanten:
define(name, value, case-insensitive)
Het is een algemene afspraak om PHP constanten in hoofdletters te typen. Bijvoorbeeld:
define('MONSTER', 'Sulley');
De eerste twee parameters in de haken zijn vrij duidelijk.
Maar de derde, case-insensitive, heeft een standaardwaarde false. Pas als je deze op true zet zal de constante niet langer hoofdlettergevoelig zijn.
Oftewel:
define('MONSTER', 'Sulley', true);
Arrays
Arrays zijn variabelen die meer dan één gegeven op kunnen slaan.
In PHP zijn arrays associative arrays of ordered arrays. Dat wil zeggen dat de items binnen de array een key en value paar hebben, oftewel een vaste plaats die bij de toegewezen waarde hoort.
<?php
$array(
key => value,
key2 => value2,
...
)
Een minder abstract voorbeeld is wanneer de ‘key’ een voornaam is en de toegewezen value een achternaam.
<?php
$array = array(
"Frodo" => "Baggins",
"Sam" => "Gamgee",
"Merry" => "Brandybuck",
"Pippin" => "Took",
);
Voor eenvoudiger werken kan je PHP objecten omzetten in arrays of arrays omzetten naar objecten, wanneer dat zo uitkomt.
Maar JavaScript kan alleen arrays gebruiken die een genummerde index hebben. Bijvoorbeeld:
var mountains = [
"Everest",
"Kilimanjaro",
"Fuji"
];
Om een waarde op te halen moet je de index van de array gebruiken, die altijd bij 0 begint:
var mountain = mountains[1];
Associatieve arrays met named of benoemde indexen worden niet ondersteund in JavaScript.
Integraties met databases
PHP is bijzonder sterk in het integreren met databases. PHP integreert vooral erg goed met MySQL of MariaDB, die allebei door WordPress gebruikt worden. Een aantal PHP frameworks bieden ook eenvoudige integraties met databases.
Het gebruik van een database maakt het makkelijk om informatie te doorzoeken, sorteren en te filteren voordat je het toont aan je bezoeker, bijvoorbeeld binnen een webshop.
Vroeger integreerde JavaScript helemaal niet met databases, maar dat is inmiddels aan het veranderen.
PouchDB is zo’n voorbeeld van een JavaScript database.
Threading
Threading gaat over het aantal instructies die een programmeertaal tegelijkertijd aankan.
PHP is bijvoorbeeld multi-threaded, waardoor het meerdere instructies tegelijkertijd (parallel) kan afwerken.
Het tegenovergestelde is een single-threaded taal zoals JavaScript, die maar één opdracht per keer kan verwerken.
Ter illustratie van threading gebruikt de developer Samim Yaquby ter vergelijking een coffeeshop die klanten bedient.
Een klein café met één barista kan het beste eerst klanten met eenvoudige bestellingen bedienen, één per keer. Dit lijkt op het single threading van JavaScript.
Een grote Starbucks daarentegen kan meerdere barista’s tegelijkertijd aan orders laten werken. Dit is meer de multi-threaded aanpak van PHP.
Snelheid
In het algemeen kan JavaScript sneller uitgevoerd worden dan PHP, als je dezelfde hardware zou gebruiken. Maar JavaScript wordt op de hardware van de client uitgevoerd, dus als dat apparaat trager is, zal de uitvoering ook trager zijn.
De snelheid van PHP gaat met sprongen vooruit sinds de release van PHP 7, dankzij een nieuwe engine die de prestaties verdubbeld heeft en ook het geheugengebruik aanzienlijk verbetert. Vergeleken met PHP 5.6 kan PHP 7.0 ruim twee keer het aantal verzoeken aan, en de prestaties verbeteren nog verder met elke nieuwe 7.x release.
PHP draait ook beter dan JavaScript wanneer je realtime toepassingen bouwt, zoals bijvoorbeeld chatbots of games.
De release van PHP 8 met de Just in Time Compiler zou PHP zelfs nog sneller moeten maken.
Pakketmanagers
Elke taal heeft een eigen pakketmanager (package manager) voor het beheren van pakketten. Dit zijn modules code van externe partijen die in één keer extra functionaliteit aan een project toe kunnen voegen. Sommige pakketten zijn afhankelijk van andere om uitgevoerd te kunnen worden, en die heten dan dependencies.
PHP heeft twee pakketmanagers, PEAR en Composer, die PHP pakketten kunnen downloaden die op de Packagist repository staan.
JavaScript heeft diverse bekende pakketmanagers, zoals npm,Yarn, en Bower.
Hiervan is npm het meest populair, met meer dan 11 miljoen developers die deze manager gebruiken.
Gebruik online
PHP is de meest populaire server-side taal die je online kan vinden, en niet een beetje: bijna 80% van de websites gebruikt het.
Alhoewel PHP erg populair is, vind je JavaScript op nagenoeg elke website, aangezien 97% van de websites JavaScript gebruiken.
Waar wordt PHP voor gebruikt?
PHP heeft allerlei toepassingen.
Het is waarschijnlijk het meest bekend voor het maken van dynamische webpagina’s. Volgens data van BuiltWith, wordt PHP gebruikt door meer dan 34 miljoen websites, en worden enkele van de meest bekende en best verdienende websites gedraaid op PHP, zoals Nike, Salesforce en Walmart.
PHP is ideaal als je project een veilige verificatie van de gebruikers nodig heeft. Denk aan het verwerken van cookies en sessies, verificatie van gebruikersnamen en wachtwoorden, en tweestapsverificatie.
Zoals eerder gezegd werkt PHP soepel met databases, en het kan uit de voeten met allerlei verschillende typen. PHP biedt ook ingebouwde beveiliging van data voor het verwerken van gebruikersinput, zodat je beschermd bent tegen bijvoorbeeld SQL injecties.
PHP wordt ook veel gebruikt voor het bouwen van realtime toepassingen zoals directe berichtenfuncties.
Ten slotte, zelfs wanneer je het meeste van je werk op de front-end doet, heb je een server back-end nodig. PHP is dan een ideale keuze, aangezien het daar specifiek voor is ontwikkeld.
Waar wordt JavaScript voor gebruikt?
JavaScript is zo populair, dat je misschien beter kan vragen “Waar wordt JavaScript nog niet voor gebruikt?”
Naast websites en web apps wordt JavaScript bijvoorbeeld gebruikt om de volgende toepassingen te bouwen:
- Mobiele apps
- Webservers
- Games
- Slide decks
- Chatbots
- … en zelfs programmeerbare drones
Kan JavaScript met PHP gecombineerd worden?
Jazeker.
Een goed voorbeeld is webformulieren, waarbij het handig is dat je de input van de gebruiker kan verifiëren voordat je het in een database opslaat.
Je kan JavaScript ook gebruiken voor client-side verificatie, bijvoorbeeld om te controleren dat een e-mailadres in het juiste format is ingetypt. Daarna kan je dan PHP gebruiken voor de verificatie aan de kant van de server, bijvoorbeeld om te controleren of het e-mailadres bestaat in je database.
Hoe gebruikt WordPress JavaScript en PHP
WordPress heeft altijd beide talen gebruikt, maar wel aanzienlijk meer PHP dan JavaScript. Dit is gaan veranderen sinds de Gutenberg editor.
In de State of the Word op WordCamp US in 2015 van Matt Mullenweg gaf hij een indruk van hoe belangrijk JavaScript gaat worden, door het publiek aan te moedigen met de volgende woorden:
“Learn JavaScript, deeply.”
Op dit moment worden de beide talen als volgt gebruikt binnen WordPress.
PHP wordt gebruikt voor bestanden met thematemplates, de loops, verificatie, validatie en toegang tot databases.
JavaScript zorgt voor de interactiviteit van thema’s en plugins, validatie aan de kant van de client, en het verwerken van acties. Enige kennis van JavaScript is nodig om blockdevelopment te kunnen doen, aangezien blocks afhankelijk zijn van het React JS framework.
PHP of JavaScript leren
Aangezien ze allebei vrij goed te leren zijn, is er geen enkele reden waarom je niet zowel PHP als JavaScript zou leren.
De twee talen gebruiken allebei enkele basisprincipes van programmeren, zoals variabelen, loops, voorwaardelijke statements, scope en objecten.
Aangezien het zo’n populaire en bekende taal is, kan je vrij eenvoudig PHP leren.
Omdat PHP een server-side taal is, heb je een server nodig om je code op te schrijven. Dat kan een echte webserver zijn, maar ook een virtuele, bijvoorbeeld als lokale development omgeving. Voorbeelden zijn DevKinsta, XAMPP, WAMP, en MAMP.
Je kan JavaScript gewoon leren door te gaan oefenen vanuit je browser.
Binnen Chrome kan je de console openen door op Control+Shift+J shortcut te drukken bij Windows, of op Command+Option+J bij Mac.
JavaScript is vooral uitdagender door de enorme omvang van het hele ecosysteem.
De JavaScript taal is van gewoon JavaScript doorontwikkeld naar een veelvoud aan frameworks. Angular, Vue, jQuery, en React zijn nog maar enkele van de bekendere frameworks.
Een goede plek voor beginners om JavaScript te leren is in de JavaScript documentatie van MDN Web Docs.
Chris Ferdinandi, die bekend is geworden met het lesgeven in ‘gewoon’ JavaScript, zegt dat JavaScript pas echt voor hem ging leven toen hij jQuery leerde.
Zijn advies voor JavaScript beginner is dan ook:
“Don’t get hung up on what order to learn things in. Don’t waste your time trying to pick the perfect thing, because there is no perfect thing.”
Let er wel op dat je de fundamenten van HTML en CSS goed begrijpt voordat je helemaal losgaat op het mooie objectsyndroom van JavaScript frameworks. HTML is de basis van alles op het web, en het kan eenvoudig kapotgaan als je al te enthousiast losgaat als onervaren JavaScript developer.
PHP of JavaScript: Vergelijkingstabel
PHP | JavaScript |
Server-side scripting | Client-side scripting |
Gebruikt aan de backend | Gebruikt aan de front-end (sinds Node.js full-stack) |
Alleen met HTML te combineren | Te combineren met diverse talen |
Gedeeltelijk hoofdlettergevoelig | Volledig hoofdlettergevoelig |
Syntax verschillen, bijv. # voor opmerkingen | Syntax verschillen, bijv. # voor opmerkingen is niet toegestaan |
Variabelen worden gedefinieerd met het $ voorvoegsel | Variabele worden via de keywords var of let gedefinieerd |
Heeft associatieve arrays | Geen associatieve arrays |
Integreert met allerlei databases | Weinig ondersteuning voor databases |
Multi-threaded | Single-threaded |
Snel, bij PHP 7.0 of nieuwer | Sneller dan PHP, meestal |
Gebruikt pakketmanagers PEAR en Composer | Gebruikt onder meer de pakketmanagers npm, Yarn, en Bower |
Snel als je PHP versie 7 of nieuwer uitvoert | Draait meestal sneller dan PHP |
Wordt op 80% van de websites gebruikt | Gebruikt op nagenoeg alle websites |
Samenvatting
In deze gedetailleerde vergelijking tussen PHP en JavaScript is er natuurlijk geen duidelijke winnaar. Ze hebben allebei voordelen en nadelen, sterke punten en zwakke punten.
PHP is stabiel en betrouwbaar, terwijl JavaScript populairder is. Maar dat betekent niet dat de één beter is dan de ander.
Welke je ook kiest voor je volgende project (en dat kan ook heel goed allebei zijn!), zolang je de tijd neemt om de taal goed te begrijpen, dan zul je sowieso een website of app kunnen bouwen waar je gebruikers blij mee zijn.
Laat een reactie achter