Skip to main content

Wat is Artisan

Artisan is de command-line interface (CLI) die bij Laravel wordt meegeleverd. Het bestaat als het artisan-script in de projectroot en biedt talloze commando’s die ontwikkeling en beheer efficiënter maken. Gebruik het list-commando om een overzicht van de beschikbare commando’s te bekijken.
Om te zien hoe je een commando gebruikt, zet je er help voor.
Gebruik je Laravel Sail, gebruik dan sail artisan in plaats van php artisan. Het commando wordt dan uitgevoerd binnen de Docker-container.

Tinker

Laravel Tinker is een REPL-omgeving waarmee je de hele applicatie — Eloquent-modellen, jobs, events en meer — interactief kunt bedienen vanaf de command line.
Na het starten kun je direct PHP-code uitvoeren.
Tinker wijzigt data daadwerkelijk. Wees zeer voorzichtig met uitvoeren in productie. Het is vooral geschikt voor het testen en debuggen in lokale en staging-omgevingen.

Eigen commando’s maken

Een commando genereren

Met make:command genereer je een sjabloon voor een commandoklasse.
Er wordt een bestand app/Console/Commands/ImportProducts.php gegenereerd.

De basisstructuur van een commando

De gegenereerde commandoklasse heeft drie hoofdonderdelen: $signature, $description en handle().
In Laravel 13 kun je ook een schrijfwijze met PHP-attributen gebruiken.

Argumenten en opties definiëren

In $signature definieer je de commandonaam, argumenten en opties samen.

Argumenten en opties ophalen

In de handle()-methode haal je de waarden op met argument() en option().

input() — getypeerde accessors

Met de input()-methode kun je argumenten en opties van een commando ophalen via dezelfde getypeerde accessors als bij HTTP-requests.
Wil je alleen een specifieke naam ophalen, dan geef je de naam rechtstreeks door (er wordt gezocht in zowel argumenten als opties).
Waar argument() en option() strings teruggeven, converteren de getypeerde accessors van input() naar het juiste type. Handig als je datums, getallen of enums typesafe wilt behandelen.

Interactie met de gebruiker

Berichten uitvoeren

Er zijn methoden beschikbaar om gekleurde berichten naar de console te schrijven.

Vragen stellen aan de gebruiker

Je kunt interactief invoer van de gebruiker ontvangen.

Voortgangsbalk

Tijdens het verwerken van grote hoeveelheden data kun je de voortgang overzichtelijk tonen.
Wil je alles handmatig fijner aansturen, gebruik dan de volgende aanpak.

Praktische use cases

Een data-importcommando

Een praktisch voorbeeld van een commando dat productdata importeert uit een CSV-bestand.
1

Genereer het commando

2

Implementeer het commando

3

Voer het commando uit

Een periodiek onderhoudscommando

Een voorbeeld van een onderhoudscommando dat je periodiek uitvoert, zoals het verwijderen van oude data.

Combineren met geplande uitvoering

Gemaakte commando’s kun je inplannen in routes/console.php. Zie taakplanning voor meer details.

Commando’s testen

Met de testfunctionaliteit van Laravel kun je de werking van Artisan-commando’s verifiëren.
Voorbeelden van assertion-methoden die je met de artisan()-methode kunt gebruiken:

Het dev-commando

Het Artisan-commando dev start de verschillende processen die je nodig hebt voor lokale ontwikkeling samen in één terminalvenster. Standaard draaien de PHP-ontwikkelserver, de queue worker, logbewaking via Pail en het compileren van assets met Vite parallel.
Intern worden de processen beheerd met het npm-pakket @laravel/multiplex. Elk proces krijgt een eigen tab, waarin je de uitvoer kunt doorzoeken en scrollen. Crasht een proces, dan wordt het automatisch herstart, en bij afsluiten wordt de uitvoer teruggeschreven naar de scrollback van de terminal, zodat je geen logs verliest. Het dev-commando vereist Node.js 22.13 of hoger. Op Windows wordt teruggevallen op het npm-pakket concurrently, waardoor de UI met tabs niet beschikbaar is. De processen die standaard worden uitgevoerd zijn:
Het vite-proces detecteert automatisch welke Node-pakketmanager je gebruikt (npm, pnpm, Yarn of Bun) en gebruikt het bijbehorende uitvoercommando.
Processen worden maximaal 5 keer herstart. Een proces dat direct na de start (binnen 1 seconde) stopt, wordt niet herstart, omdat dat waarschijnlijk duidt op een fout in het commando of een poortconflict. Om herstarten voor één uitvoering uit te schakelen, geef je --no-restart op.

De dev-processen aanpassen

De processen die het dev-commando uitvoert, kun je aanpassen met de klasse DevCommands. Meestal registreer je ze in de boot-methode van de AppServiceProvider van je applicatie. De register-methode ontvangt een commandostring en optioneel een procesnaam.
Wil je een Artisan-commando registreren, dan kun je de artisan-methode gebruiken, die automatisch php artisan vooraan zet.
Op dezelfde manier zet de node-methode het runcommando van de gedetecteerde pakketmanager (bijv. npm run) vooraan, en de nodeExec-methode het exec-commando van de pakketmanager (bijv. npx).
Registreer je een proces met dezelfde naam als een standaardproces, dan vervangt het dat standaardproces. Zo kun je bijvoorbeeld het serverproces aanpassen om een andere poort te gebruiken.
Ook de kleur van het proceslabel in de terminal kun je aanpassen. De beschikbare kleurmethoden zijn blue, purple, pink, orange, green en yellow. Je kunt ook een eigen hexkleur doorgeven aan de color-methode.
Wil je de geregistreerde dev-processen bekijken zonder ze daadwerkelijk te starten, gebruik dan het dev:list-commando.

De dev-processen filteren

Met de only-methode geef je aan dat bij het uitvoeren van het dev-commando alleen specifieke processen moeten starten. Evenzo kun je met de except-methode specifieke processen uitsluiten.
Wil je dev-commando’s uitsluiten die door pakketten zijn geregistreerd, of de standaardcommando’s van Laravel, gebruik dan de methoden withoutVendorCommands en withoutDefaultCommands.
Gebruik je bij lokale ontwikkeling ook Horizon of Reverb, registreer ze dan met DevCommands::artisan(). Dan start je alles handig in één keer met php artisan dev.

Overzicht van veelgebruikte commando’s

Laatst gewijzigd op 6 september 2026