{"id":50457,"date":"2023-02-21T13:42:52","date_gmt":"2023-02-21T12:42:52","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=50457&#038;preview=true&#038;preview_id=50457"},"modified":"2023-06-30T15:11:10","modified_gmt":"2023-06-30T13:11:10","slug":"laravel-10","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/","title":{"rendered":"Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features"},"content":{"rendered":"<p>Heb je je na meer dan tien jaar sinds de introductie van het razend populaire <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-laravel\/\">Laravel framework<\/a> wel eens afgevraagd: &#8220;Wat kan Laravel PHP developers nog meer bieden?&#8221;<\/p>\n<p>Gezien de mate waarin het PHP development heeft vereenvoudigd &#8211; voor zowel beginnende als professionele developers &#8211; kan je misschien wel zelfs stellen dat het developers z\u00f3 heeft verwend dat ze inmiddels geloven dat PHP de gemakkelijkste programmeertaal is die er is.<\/p>\n\n<p>De vraag is dus: heeft Laravel nog meer verrassingen in petto voor <a href=\"https:\/\/kinsta.com\/blog\/laravel-developer\/\">Laravel developers<\/a>? Of heeft het inmiddels alle mogelijke middelen uitgeput om PHP developers te ondersteunen?<\/p>\n<p>Als we een tipje van de sluier mogen oplichten: Laravel 10 heeft enorm veel te bieden. En dit is precies wat we in dit artikel zullen bespreken terwijl we je meenemen op een reis door de nieuwe features ,fixes en afgeschreven methoden en pakketten van Laravel 10.<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Laravel releaseschema<\/h2>\n<p>Vroeger bracht het Laravel coreteam jaarlijks twee grote versies uit (\u00e9\u00e9n om de zes maanden).<\/p>\n<p>De releasecyclus werd echter gewijzigd toen Taylor Otwell, de bedenker van Laravel, <a href=\"https:\/\/blog.laravel.com\/updates-to-laravels-versioning-policy\" target=\"_blank\" rel=\"noopener noreferrer\">aankondigde<\/a> dat er nu elk jaar \u00e9\u00e9n grote versie zou worden uitgebracht. Hierdoor konden het kernteam en de community meer tijd en moeite besteden aan een specifieke versie van het framework en nieuwe krachtige mogelijkheden introduceren zonder dat er grote veranderingen nodig waren.<\/p>\n<p>Laravel 10 zou op 7 februari 2023 worden uitgebracht, na de release van <a href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-9\/\">Laravel 9<\/a> op 8 februari 2022. Het team had echter meer tijd nodig om hun kunstwerk af te ronden, en Laravel 10 werd uiteindelijk gepubliceerd op 14 februari 2023.<\/p>\n<p>Laravel 11 wordt nu verwacht in het eerste deel van februari 2024.<\/p>\n<p>Bovendien worden volgens het <a href=\"https:\/\/laravel.com\/docs\/10.x\/releases#support-policy\" target=\"_blank\" rel=\"noopener noreferrer\">ondersteuningsbeleid<\/a> voor alle Laravel versies 18 maanden lang bugfixes aangeboden en twee jaar lang beveiligingsupdates.<\/p>\n<p>Hieronder volgt het verwachte schema voor bugfixes en beveiligingsupdates:<\/p>\n<ul>\n<li>Laravel 9 krijgt nog bugfixes tot 8 augustus 2023 en beveiligingsfixes tot 6 februari 2024.<\/li>\n<li>Laravel 10 krijgt bugfixes tot 6 augustus 2024 en beveiligingsfixes tot 4 februari 2025.<\/li>\n<li>Laravel 11 krijgt naar verwachting bug fixes tot 5 augustus 2025 en security fixes tot 3 februari 2026.<\/li>\n<\/ul>\n<h2>Moet je upgraden naar Laravel 10?<\/h2>\n<p>Het is belangrijk om te onthouden dat we de Laravel versie van onze applicatie niet altijd hoeven te upgraden naar de nieuwste versie zodra er een nieuwe versie uitkomt.<\/p>\n<p>Laravel is een open source framework, wat inhoudt dat elke keer dat we een nieuwe Laravel instantie op onze machine installeren, we eigenaar zijn van de codebase van het framework. Dit betekent dat zelfs als de frameworkversie die onze app gebruikt niet meer ondersteund wordt, de app nog steeds werkt; we moeten hem alleen zelf onderhouden.<\/p>\n<p>Daarom wordt algemeen voorgesteld om de stabiliteit van de applicatie voorrang te geven boven upgrades van het framework.<\/p>\n<p>Kortom, je zou moeten overwegen te upgraden naar Laravel 10 als:<\/p>\n<ul>\n<li>De applicatie stabiel is met de huidige versie en zonder problemen functioneert.<\/li>\n<li>De nieuwe versie een feature toevoegt die je applicatie nodig heeft of een probleem oplost dat je applicatie ondervindt.<\/li>\n<li>De applicatie goed wordt getest voordat de wijzigingen in de upgrade in productie worden geduwd.<\/li>\n<\/ul>\n<h2>Laravel 10 updates highlights<\/h2>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-21.png\" alt=\"Het Laravel 10 logo met het woord \"Laravel\" in fel oranje en de \"10\" in grijs.\" width=\"1024\" height=\"576\"><figcaption class=\"wp-caption-text\">Laravel 10.<\/figcaption><\/figure>\n<p>Kinsta is een grote fan van Laravel. Daarom hebben we de hoogtepunten van Laravel 10 verzameld in een enkel artikel dat je kunt gebruiken als referentie en handleiding om alle nieuwe features te gebruiken. Daarom raden we aan deze pagina te bookmarken en van tijd tot tijd opnieuw te bezoeken.<\/p>\n<h3>Nieuwe features en updates in Laravel 10<\/h3>\n<p>Het meest spannende aan elke nieuwe release is ongetwijfeld de toevoeging van nieuwe features . Dus zonder verder oponthoud beginnen we met een sammenvatting van de nieuwe features en updates in Laravel 10.<\/p>\n<h4>1. PHP 8.1: het hart van Laravel 10<\/h4>\n<p>PHP 8.1 is de minimaal vereiste PHP versie in Laravel 10. Sommige features van PHP 8.1, zoals readonly properties en array_is_list, worden gebruikt in Laravel 10.<\/p>\n<h4>2. Ondersteuning voor PHP 8.2<\/h4>\n<p>PHP 8.2 werd uitgebracht op 8 december 2022, slechts twee maanden voor de releasedatum van Laravel 10. Toch zou dit je er niet van moeten weerhouden om PHP 8.2 features te gebruiken, want zonder ook maar iets te hoeven doen is Laravel 10 klaar voor PHP 8.2.<\/p>\n<p>In feite ondersteunt het hele Laravel ecosysteem, inclusief Forge, Vapor en Envoyer, PHP 8.2, en je kunt zelfs <a href=\"https:\/\/blog.laravel.com\/laravel-loves-php-82\">PHP 8.2 gebruiken\u00a0met Laravel 9<\/a>. Hoe cool is dat!<\/p>\n<h4>3. Laravel offici\u00eble pakketten upgrades<\/h4>\n<p>Niet alleen het framework wordt professioneel onderhouden en regelmatig bijgewerkt, maar ook alle offici\u00eble pakketten en het ecosysteem.<\/p>\n<p>Hieronder volgt een lijst van de meest recente offici\u00eble Laravel pakketten die zijn bijgewerkt om Laravel 10 te ondersteunen:<\/p>\n<ol>\n<li>Breeze<\/li>\n<li>Cashier Stripe<\/li>\n<li>Dusk<\/li>\n<li>Horizon<\/li>\n<li>Installer<\/li>\n<li>Jetstream<\/li>\n<li>Passport<\/li>\n<li>Pint<\/li>\n<li>Sail<\/li>\n<li>Scout<\/li>\n<li>Valet<\/li>\n<\/ol>\n<p>En nog een traktatie voor fans van Rails, Vue, React en Svelte: <a href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-inertia\/\">Inertiajs 1.0.1<\/a> ondersteunt ook Laravel 10.<\/p>\n<h4>4. Predis versie-upgrade<\/h4>\n<p>Predis is een robuuste <a href=\"https:\/\/kinsta.com\/nl\/blog\/in-memory-database\/\">Redis<\/a> client voor PHP die je kan helpen <a href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-caching\/\">het maximale uit caching<\/a> te halen om een fantastische gebruikerservaring te bieden. Laravel ondersteunde voorheen zowel versie 1 als 2, maar vanaf Laravel 10 ondersteunt het framework Predis 1 niet meer.<\/p>\n<p>Hoewel de Laravel documentatie <a href=\"https:\/\/laravel.com\/docs\/10.x\/redis\" target=\"_blank\" rel=\"noopener noreferrer\">Predis noemt<\/a> als het pakket voor interactie met Redis, kun je ook de <a href=\"https:\/\/github.com\/phpredis\/phpredis\/\" target=\"_blank\" rel=\"noopener noreferrer\">offici\u00eble PHP extensie<\/a> gebruiken. Deze extensie biedt een API voor communicatie met Redis servers.<\/p>\n<h4>5. Native type declaraties<\/h4>\n<p>Laravel gebruikte vroeger DocBlocks in zijn skeletoncode om duidelijk te maken wat een stuk code doet en wat voor soort parameters of reacties je kunt verwachten. Maar dankzij native type declaraties in Laravel 10 zal dit veranderen.<\/p>\n<p>De beste manier om deze verandering uit te leggen is met een eenvoudig voorbeeld. In plaats van dat een functie er zo uitziet:<\/p>\n<pre><code class=\"language-php\">\/**\n* Determine whether the user can create models.\n*\n* @param {{ namespacedUserModel }} $user\n* @return IlluminateAuthAccessResponse|bool\n*\/\n\npublic function create({{ user }} $user)\n{\n  \/\/\n}<\/code><\/pre>\n<p>&#8230;zal hij er zo uitzien:<\/p>\n<pre><code class=\"language-php\">\/**\n* Determine whether the user can create models.\n*\/\n\npublic function create({{ user }} $user): bool\n{\n  \/\/\n}<\/code><\/pre>\n<p>Deze verandering is puur ten behoeve van de ervaring van de developer, omdat IDE&#8217;s dan de vorm van de verwachte parameter en de respons kennen. Het zal een betere duidelijkheid geven over types als dat niet mogelijk is via de ingebouwde PHP types. Het zal de code editors helpen om beter te presteren met auto-complete features .<\/p>\n<h4>6. Alle validatieregels standaard invokable<\/h4>\n<p>Als je in Laravel 9 een invokable validatieregel wilde maken, moest je na het Artisan commando een <code>--invokable<\/code> flag toevoegen. Dit is niet meer nodig omdat alle Laravel 10 regels standaard invokable zijn. Je kunt dus het volgende commando uitvoeren om een nieuwe invokable regel te maken in Laravel 10:<\/p>\n<pre><code class=\"language-php\">php artisan make:rule CustomRule<\/code><\/pre>\n<h4>7. Native ondersteuning voor het wijzigen van kolommen<\/h4>\n<p>In een poging om de noodzaak van het DBAL (<code>doctrine\/dbal<\/code>) pakket te elimineren bij het gebruik van <code>change()<\/code> om kolommen te wijzigen, is in Laravel 10 een nieuwe feature ge\u00efntroduceerd waarmee developers <code>change()<\/code> methode kunnen gebruiken en kolommen kunnen wijzigen met <a href=\"https:\/\/kinsta.com\/nl\/blog\/postgresql-vs-sql-server\/\">MySQL, PostgreSQL<\/a> en <a href=\"https:\/\/kinsta.com\/nl\/blog\/postgresql-vs-sql-server\/\">SQL Server<\/a> zonder de noodzaak van extra pakketten. Dit is een belangrijke en <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/45487#issuecomment-1371500000\" target=\"_blank\" rel=\"noopener noreferrer\">riskante verandering<\/a>, maar we geloven dat het de moeite waard is omdat het de afhankelijkheid van een extra pakket wegneemt.<\/p>\n<p>Zie het onderstaande voorbeeld om de nieuwe feature beter te begrijpen:<\/p>\n<pre><code class=\"language-php\">$table-&gt;integer('user_balance')-&gt;unsigned()-&gt;default(0)-&gt;comment('balance'); \/\/ `user_balance` is an integer, unsigned, defaults to '0', and column comment is 'balance'<\/code><\/pre>\n<p>We nemen nu aan dat we een kolom hebben voor <code>user_balance<\/code> en dat we het type ervan willen veranderen. Vanaf Laravel 10 kunnen we dit eenvoudig doen:<\/p>\n<pre><code class=\"language-php\">$table-&gt;bigInteger('user_balance')-&gt;change(); \/\/ This will change `user_balance` to bigInteger instead of just integer<\/code><\/pre>\n<p>De bovenstaande code zal met succes het type van de kolom veranderen, maar zal ook de attributen <code>UNSIGNED<\/code>, <code>DEFAULT<\/code>, en <code>COMMENT<\/code> droppen. Daarom is het belangrijk te onthouden dat je alle attributen toevoegt als je het type van een kolom verandert:<\/p>\n<pre><code class=\"language-php\">$table-&gt;bigInteger('user_balance')-&gt;unsigned()-&gt;default(0)-&gt;comment('balance')-&gt;change();<\/code><\/pre>\n<p>In het geval dat je meerdere <a href=\"https:\/\/kinsta.com\/blog\/laravel-database\/\">databaseverbindingen<\/a> hebt en DBAL al hebt ge\u00efnstalleerd, is het aan te bevelen om de methode <code>Schema::useNativeSchemaOperationsIfPossible()<\/code> te callen binnen de opstartmethode in <code>AppProvidersAppServiceProvider<\/code> om native schemabewerkingen te kunnen gebruiken en om native bewerkingen te gebruiken voordat je vertrouwt op het pakket (SQLite ondersteunt dit bijvoorbeeld nog niet):<\/p>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesSchema;\nclass AppServiceProvider extends ServiceProvider\n{\n  public function boot()\n  {\n    Schema::useNativeSchemaOperationsIfPossible();\n  }\n}<\/code><\/pre>\n<h4>8. Kolomtype native retrieval<\/h4>\n<p>Een andere opmerkelijke feature\u00a0van Laravel 10 is de mogelijkheid om de methode <code>Schema::getColumnType<\/code> te gebruiken zonder te hoeven vertrouwen op het pakket <code>doctrine\/dbal<\/code>. Momenteel gebruiken we <code>Schema::getColumnType<\/code> met DBAL om het kolomtype te verkrijgen. DBAL koppelt elk native kolomtype aan zijn DBAL type equivalent, en het ondersteunt niet veel van de kolomtypes die Laravel in verschillende databases gebruikt.<\/p>\n<p>In Laravel 10 daarentegen geeft de nieuwe methode <code>Schema::getColumnType<\/code> het werkelijke kolomtype terug in plaats van zijn DBAL equivalent. Hiermee kun je ook integratietests schrijven voor de nieuwe native kolomwijzigingsfeature. Je kunt deze feature gebruiken om de datatypenaam of de hele typedefinitie van de opgegeven kolom op te vragen:<\/p>\n<pre><code class=\"language-php\">Schema::getColumnType('products', 'price'); \/\/ decimal<\/code><\/pre>\n<h4>9. Sneller Hashing algoritme<\/h4>\n<p>xxHash is een Hash algoritme dat ongelooflijk snel is. Het beschikt over grote willekeur en spreiding van output, en ook over uniciteit om botsingen te verminderen. Omdat PHP 8.1 ondersteuning biedt voor xxh128, en omdat Laravel 10 draait op PHP 8.1, is het hebben van zo&#8217;n betrouwbaar hash algoritme binnen Laravel 10 ideaal.<\/p>\n<p>Het is goed te weten dat Taylor tijdens zijn beoordeling van deze verandering <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/45371#issuecomment-1359597016\" target=\"_blank\" rel=\"noopener noreferrer\">benadrukte<\/a> dat sommige externe pakketten erop vertrouwen dat de bestandsnamen in het exacte format zijn als de SHA-1 hash, wat het algoritme is dat Laravel vroeger gebruikte voor hashing. Als je een upgrade naar Laravel 10 plant, is het daarom verstandig om dit dubbel te controleren in externe pakketten die je in je app gebruikt.<\/p>\n<h4>10. <code>whereExists()<\/code> methode ondersteuning voor Eloquent Builder<\/h4>\n<p>Momenteel vereist het gebruik van <code>whereExists()<\/code> het configureren van de nested query met behulp van een closure. Gelukkig is het met Laravel 10 nu mogelijk om een Eloquent Builder op te nemen als geneste query. Dit maakt het gebruik van aangepaste buildermethoden, model scopes, enzovoort mogelijk.<\/p>\n<p>We doen dit bijvoorbeeld normaal gesproken als we <code>whereExists()<\/code>:<\/p>\n<pre><code class=\"language-php\">Order::whereExists(function ($query) {\n  $query-&gt;from('products')-&gt;whereColumn('products.order_id', 'orders.id');\n});<\/code><\/pre>\n<p>Met Laravel 10 kunnen we in plaats daarvan gewoon dit doen:<\/p>\n<pre><code class=\"language-php\">Order::whereExists(\n  Product::whereColumn('products.order_id', 'orders.id')\n);<\/code><\/pre>\n<h4>11. Eager loading optimalisatie<\/h4>\n<p>Een van de interessante nieuwe features van Laravel 10 is <a href=\"https:\/\/kinsta.com\/nl\/blog\/prestaties-laravel\/#11-make-use-of-eager-loading\">eager loading optimalisatie<\/a> als er geen sleutels te laden zijn. Deze verandering is meer een fix dan een feature, omdat het een actueel probleem aanpakt waarbij eager loading relaties een groot aantal onmogelijke queries veroorzaakt.<\/p>\n<p>Momenteel voert Laravel bij het eager loading van relaties die geen sleutels te laden hebben, toch een query uit zoals deze:<\/p>\n<pre><code class=\"language-php\">select * from `table_name` where 0 = 1<\/code><\/pre>\n<p>Echter, de nieuwe Laravel 10 update controleert of er \u00fcberhaupt sleutels beschikbaar zijn en, als die er niet zijn, levert een lege verzameling, waardoor de onnodige database queries niet meer nodig zijn.<\/p>\n<h4>12. <code>$path<\/code> optioneel voor bestandssysteemmethoden<\/h4>\n<p>In Laravel 10 is de parameter <code>$path<\/code> optioneel voor de onderstaande methoden:<\/p>\n<ul>\n<li><code>FilesystemAdapter#putFile<\/code><\/li>\n<li><code>FilesystemAdapter#putFileAs<\/code><\/li>\n<li><code>UploadedFile#store<\/code><\/li>\n<li><code>UploadedFile#storeAs<\/code><\/li>\n<li><code>UploadedFile#storePublicly<\/code><\/li>\n<li><code>UploadedFile#storePubliclyAs<\/code><\/li>\n<\/ul>\n<p>Dus in plaats van dit te doen om een ge\u00fcpload bestand op <a href=\"https:\/\/kinsta.com\/nl\/blog\/amazon-s3-backups\/\">Amazon S3<\/a> op te slaan:<\/p>\n<pre><code class=\"language-php\">Storage::disk('s3')-&gt;putFile(\u2018post\/images', $uploadedFile);<\/code><\/pre>\n<p>&#8230;kunnen we dit doen:<\/p>\n<pre><code class=\"language-php\">Storage::disk(Disk::PostImages)-&gt;putFile($uploadedFile)<\/code><\/pre>\n<h4>13. Database expressies en grammatica-specifieke formatting<\/h4>\n<p>Slechts vier dagen voor de release van Laravel 10 besloot het Laravel coreteam een briljante feature samen te voegen die een grote moeilijkheid aanpakt bij het werken met meerdere databases.<\/p>\n<p>In vorige versies, als we met PostgreSQL en MySQL werkten en de eerste waarde van een lijst als alias wilden retourneren, moesten we ruwe databasecode schrijven en het volgende doen:<\/p>\n<pre><code class=\"language-php\">DB::table(\u2018visitors')\n-&gt;when(isPostgreSQL(), fn ($query) =&gt; $query-&gt;select(DB::raw('coalesce(NULL, \"user\", \"guest\") AS \"First Visitor\"')))\n-&gt;when(isMySQL(), fn ($query) =&gt; $query-&gt;select(DB::raw('coalesce(NULL, `user`, `guest`) AS `First Visitor`')))<\/code><\/pre>\n<p>In de bovenstaande code gebruiken we de <a href=\"https:\/\/www.w3schools.com\/sql\/func_sqlserver_coalesce.asp\" target=\"_blank\" rel=\"noopener noreferrer\">functie<code>COALESCE()<\/code><\/a> om de eerste niet-null waarde terug te geven als een alias met de naam <strong>first visitor<\/strong>. Telkens als we zo&#8217;n bewerking zouden moeten uitvoeren, zouden we dus opnieuw ruwe databasecode moeten schrijven.<\/p>\n<p>Met de nieuwe feature kunnen we herbruikbare expressieclasses maken die de ruwe expressies en statements\u00a0die we nodig hebben voor onze queries slechts eenmaal implementeren. Hierdoor hoeven we geen ruwe databasecode meer te schrijven als we meer databasefunctionaliteiten willen gebruiken.<\/p>\n<p>Terug naar het bovenstaande voorbeeld, laten we de nieuwe Laravel 10 aanpak volgen om hetzelfde resultaat te bereiken, maar zonder gebruik te maken van de syntax van ruwe databasecode.<\/p>\n<p>Eerst moeten we twee classes maken &#8211; een voor aliasing, en een voor het gebruik van de <code>COALESCE()<\/code> functie:<\/p>\n<pre><code class=\"language-php\">class Alias implements Expression\n{\n  public function __construct(\n    public readonly Expression|string $expression,\n    public readonly string $name,\n  ) { }\n  public function getValue(Grammar $grammar): string\n  {\n    return match ($grammar-&gt;isExpression($this-&gt;expression)) {\n      true =&gt; \"{$grammar-&gt;getValue($this-&gt;expression)} as {$grammar-&gt;wrap($this-&gt;name)}\",\n      false =&gt; $grammar-&gt;wrap(\"{$this-&gt;name} as {$this-&gt;name}\"),\n    };\n  }\n}\nclass Coalesce implements Expression\n{\n  public function __construct(\n    public readonly array $expressions,\n  ) { }\n  public function getValue(Grammar $grammar): string\n  {\n    $expressions = array_map(function ($expression) use($grammar): string {\n      return match ($grammar-&gt;isExpression($expression)) {\n        true =&gt; $grammar-&gt;getValue($expression),\n        false =&gt; $grammar-&gt;wrap($expression),\n      };\n    }, $this-&gt;expressions);\n    $expressions = implode(', ', $expressions);\n    return \"coalesce({$expressions})\";\n  }\n}<\/code><\/pre>\n<p>Dan kunnen we dit doen om het gewenste resultaat te bereiken voor zowel MySQL als PostgreSQL:<\/p>\n<pre><code class=\"language-php\">DB::table('visitors') -&gt;select(new Alias(new Coalesce([NULL, 'user', 'guest']), 'First Visitor'));<\/code><\/pre>\n<p>Je zou kunnen denken dat het te veel werk is om te schrijven, maar het is zeker de moeite waard omdat je het maar \u00e9\u00e9n keer hoeft te schrijven en het bespaart je het gedoe van het veranderen van de syntaxis bij het omgaan met meerdere databases.<\/p>\n<p>Bovendien zal deze verandering volgens de maker van het <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/44784\" target=\"_blank\" rel=\"noopener noreferrer\">pull request<\/a>, Tobias Petry, de deur openen voor talloze mogelijkheden voor pakketten om de meest voorkomende raw expression classes voor je aan te bieden. Hij verklaarde zelfs dat hij die na de release van Laravel 10 in een <a href=\"https:\/\/github.com\/tpetry\/laravel-query-expressions\" target=\"_blank\" rel=\"noopener noreferrer\">speciaal pakket<\/a> aan de community\u00a0zal aanbieden.<\/p>\n<h4>14. SQL serverupdate om <code>FETCH<\/code> en <code>OFFSET<\/code> te gebruiken voor queries die geen <code>orderBy<\/code>hebben<\/h4>\n<p>Wanneer we <code>orderBy<\/code> gebruiken in een query zoals deze:<\/p>\n<pre><code class=\"language-php\">$builder-&gt;select('*')-&gt;from('users')-&gt;skip(11)-&gt;take(10)-&gt;orderBy('email', 'desc');<\/code><\/pre>\n<p>Laravel produceert dan een SQL instructie die <a href=\"https:\/\/www.geeksforgeeks.org\/sql-offset-fetch-clause\/\" target=\"_blank\" rel=\"noopener noreferrer\"><code>FETCH<\/code> en <code>OFFSET<\/code><\/a> gebruikt:<\/p>\n<pre><code class=\"language-sql\">select * from [users] order by [email] desc offset 11 rows fetch next 10 rows only<\/code><\/pre>\n<p>Echter, in eerdere versies van Laravel, als we <code>orderBy<\/code> uit de query laten vallen, valt het terug op de oude methode van offsetting van de resultaten:<\/p>\n<pre><code class=\"language-php\">$builder-&gt;select('*')-&gt;from('users')-&gt;skip(11)-&gt;take(10);<\/code><\/pre>\n<pre><code class=\"language-sql\">select * from (select *, row_number() over (order by (select 0)) as row_num from [users]) as temp_table where row_num between 11 and 20 order by row_num<\/code><\/pre>\n<p>Maar nu in Laravel 10 stelt deze <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/44937\" target=\"_blank\" rel=\"noopener noreferrer\">nieuwe update<\/a> je Laravel 10 applicatie in staat om <code>FETCH<\/code> en <code>OFFSET<\/code> te gebruiken, zelfs als <code>orderBy<\/code> niet aanwezig is:<\/p>\n<pre><code class=\"language-sql\">select * from [users] order by (SELECT 0) offset 10 rows fetch next 10 rows only<\/code><\/pre>\n<p>Deze update <a href=\"https:\/\/gist.github.com\/dunhamjared\/cb40bbf294ed6f8e48bd60010a31b4f3\" target=\"_blank\" rel=\"noopener noreferrer\">verbetert de snelheid met 33%<\/a> en vereist minder uitvoeringsstappen.<\/p>\n<h4>15. Ondersteuning voor PHPUnit 10<\/h4>\n<p>Laravel 10 ondersteunt PHPUnit 10. Het is een framework voor unit testing voor PHP en versie 10 werd <a href=\"https:\/\/phpunit.de\/announcements\/phpunit-10.html\" target=\"_blank\" rel=\"noopener noreferrer\">uitgebracht op 3 februari 2023<\/a>. Laravel 10 heeft nog wel ondersteuning voor PHPUnit 9 en 8.<\/p>\n<h4>16. Beveiligingsverbeteringen voor de <code>Timebox<\/code>class<\/h4>\n<p>Laravel 10 bevat beveiligingsverbeteringen voor de klasse <code>Timebox<\/code>, die de applicatie moet beschermen tegen <a href=\"https:\/\/tom.vg\/papers\/timeless-timing-attack_usenix2020.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">timeless timing aanvallen<\/a>. De <code>Timebox<\/code> class wordt ge\u00efmplementeerd in de methode <code>hasValidCredentials<\/code>.<\/p>\n<p>De<code>Timebox<\/code> class heeft nu ondersteuning voor het afhandelen van uitzonderingen die gegeven worden tijdens de callback uitvoering van een Timebox.<\/p>\n<h4>17. <code>dispatch()<\/code> het gedrag van de methode is hetzelfde in Laravel 10<\/h4>\n<p>De <code>dispatch()<\/code> methode binnen de <code>DispatchesJobs<\/code> eigenschap controleert nu op unieke jobs, net als de globale <code>dispatch()<\/code> helperfunctie. Hierdoor nemen <code>dispatch()<\/code> methoden dezelfde functionaliteiten over in Laravel 10.<\/p>\n<h4>18. Laravel Pennant<\/h4>\n<p>Als je ooit hebt gewerkt aan een webapplicatie die voortdurend wordt bijgewerkt met nieuwe features, dan begrijp je hoe essentieel featureflags zijn. Toch zou het bewaren van featureflags een aanzienlijke hoeveelheid werk vergen om het goed te doen, maar maak je geen zorgen, Laravel staat voor je klaar met het nieuwe first-party Laravel Pennant pakket.<\/p>\n<p><a href=\"https:\/\/laravel.com\/docs\/10.x\/pennant\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Pennant<\/a> biedt een eenvoudig te gebruiken oplossing voor het onderhouden van featureflags. Het wordt zelfs geleverd met een in-memory arraydriver en een database.<\/p>\n<p>Je kunt eenvoudig een nieuwe feature\u00a0defini\u00ebren:<\/p>\n<pre><code class=\"language-php\">use LaravelPennantFeature;\nuse IlluminateSupportLottery;\nFeature::define('new-color-button', function () {\nreturn Lottery::odds(1, 10);\n});<\/code><\/pre>\n<p>Dan kun je controleren of de gebruiker al dan niet toegang heeft tot deze feature:<\/p>\n<pre><code class=\"language-php\">use LaravelPennantFeature;\nif (Feature::active('new-color-button')) {\n  \/\/ ...\n}<\/code><\/pre>\n<p>Het ziet er zelfs mooier uit in Laravel Blade:<\/p>\n<pre><code class=\"language-php\">@feature('new-color-button')\n\/\/ Kinsta Rules!!\n@endfeature<\/code><\/pre>\n<h4>19. Laravel Process interactie<\/h4>\n<p>De nieuwe Process interacties in Laravel 10 maakt het testen en uitvoeren van CLI processen een fluitje van een cent. Het biedt een eenvoudige API om de last van het testen te verlichten. Laten we het voorbeeld pakken uit de <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/45314\" target=\"_blank\" rel=\"noopener noreferrer\">oorspronkelijke PR<\/a> voor de feature\u00a0van Taylor:<\/p>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesProcess;\n$result = Process::run('ls -la');\n$result-&gt;successful();\n$result-&gt;failed();\n$result-&gt;exitCode();\n$result-&gt;output();\n$result-&gt;errorOutput();\n$result-&gt;throw();\n$result-&gt;throwIf(condition);<\/code><\/pre>\n<p>Je hebt waarschijnlijk gemerkt hoe eenvoudig en strak de bovenstaande code is. Als we verder gaan met het bouwen van processen, wordt het alleen maar beter:<\/p>\n<pre><code class=\"language-php\">$result = Process::timeout(60)-&gt;path(base_path())-&gt;env([...])-&gt;run('ls -la');\n$result = Process::forever()-&gt;run('ls -la');<\/code><\/pre>\n<p>Om deze nieuwe feature te gebruiken bij het testen, kun je een nieuw en fake proces maken zoals dit:<\/p>\n<pre><code class=\"language-php\">Process::fake([\n  'ls *' =&gt; Process::result('Hello From Kinsta'),\n]);<\/code><\/pre>\n<p>Dan kun je het fake proces uitvoeren en de nieuw <a href=\"https:\/\/laravel.com\/docs\/10.x\/processes#available-assertions\" target=\"_blank\" rel=\"noopener noreferrer\">beschikbare assertions<\/a>\u00a0gebruiken:<\/p>\n<pre><code class=\"language-php\">$result = Process::run('ls -la');\nProcess::assertRan(function ($process, $result) {\n  return $process-&gt;command == 'ls -la';\n});\nProcess::assertRanTimes(function ($process, $result) {\n  return $process-&gt;command == 'ls -la';\n}, times: 1);\nProcess::assertNotRan(function ($process, $result) {\n  return $process-&gt;command == 'cat foo';\n});<\/code><\/pre>\n<h4>20. Pest scaffolding<\/h4>\n<p>Pest test scaffolding is nu standaard ingeschakeld bij het maken van nieuwe Laravel projecten. Gebruik de vlag <code>--pest<\/code> bij het bouwen van een nieuwe app met het Laravel installatieprogramma om deze feature in te schakelen:<\/p>\n<pre><code class=\"language-php\">laravel new example-kinsta-app --pest<\/code><\/pre>\n<h4>21. String wachtwoord helperfunctie<\/h4>\n<p>Laravel 10 kan een willekeurig en veilig wachtwoord maken met een gegeven lengte:<\/p>\n<pre><code class=\"language-php\">$password = Str::password(12);<\/code><\/pre>\n<h3>Afgeschreven methoden en pakketten in Laravel 10<\/h3>\n<p>Laten we nu eens kijken naar de pakketten en methoden die in de release van Laravel 10 zijn geschrapt.<\/p>\n<h4>Laravel 10 neemt afscheid van PHP 8.0<\/h4>\n<p>Het Laravel framework laat de ondersteuning voor PHP 8.0 vallen in Laravel 10. Vandaar dat als je van plan bent je app te upgraden naar Laravel 10, je eerst de PHP versie moet bijwerken naar <a href=\"https:\/\/kinsta.com\/nl\/blog\/php-8-1\/\">PHP 8.1<\/a> of <a href=\"https:\/\/kinsta.com\/nl\/blog\/php-8-2\/\">PHP 8.2<\/a>.<\/p>\n<h4>Afgeschafte methoden verwijderen<\/h4>\n<p>De <a href=\"https:\/\/laravel.com\/docs\/10.x\/upgrade\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel documentatie<\/a> wordt bijgewerkt met alle wijzigingen en belangrijke afschrijvingen. Als je een huidig project gaat migreren naar Laravel 10, moet alle code die een afgeschafte methode gebruikt worden herschreven in een nieuwe aanpak om hetzelfde resultaat te bereiken.<\/p>\n<p>Hier is een lijst van enkele afschrijvingen:<\/p>\n<ul>\n<li>De methode <code>Route::home<\/code> (deprecated in Laravel 9)<\/li>\n<li>Functies en methoden rond <code>dispatchNow<\/code>, afgeschreven om developers aan te moedigen gebruik te maken van <a href=\"https:\/\/laravel.com\/docs\/10.x\/queues#synchronous-dispatching\" target=\"_blank\" rel=\"noopener noreferrer\"><code>dispatchSync<\/code><\/a>, de enige ondersteunde methode voor onmiddellijke dispatch<\/li>\n<li>De <code>getBaseQuery<\/code> methode, die een <code>toBase<\/code> equivalent heeft<\/li>\n<li>De class<code>MaintenanceModeException<\/code><\/li>\n<li>De <code>MocksApplicationServices<\/code> property<\/li>\n<li>De mail fake&#8217;s <code>Mail::failures<\/code> methode<\/li>\n<li>De property <code>$dates<\/code> (gebruik <a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent-mutators#attribute-casting\" target=\"_blank\" rel=\"noopener noreferrer\"><code>$casts<\/code><\/a> in plaats daarvan)<\/li>\n<li>De methode <code>assertTimesSent()<\/code><\/li>\n<li>Ondersteuning voor Predis 1 en DBAL 2<\/li>\n<li>Alle gerelateerde afschrijvingen in <code>doctrine\/dbal<\/code> sinds Laravel ondersteuning voor versie 2 heeft laten vallen<\/li>\n<\/ul>\n<h2>Zo installeer je Laravel 10<\/h2>\n<p>Het Laravel coreteam heeft ervoor gezorgd dat alle developers gemakkelijk toegang kunnen krijgen tot het framework op verschillende omgevingen. Daarom zijn er verschillende manieren om met Laravel 10 op je machine aan de slag te gaan, en je bent helemaal vrij om te kiezen wat voor jou het beste werkt.<\/p>\n<h3>Laravel 10 installeren op MacOS<\/h3>\n<p>Je kunt gemakkelijk aan de slag met Laravel 10 op MacOS door <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-docker\/\">Docker<\/a> en <a href=\"https:\/\/laravel.com\/docs\/10.x\/sail\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Sail<\/a> te gebruiken. Je kunt het volgende terminalcommando uitvoeren vanuit de map waar je de applicatie wilt installeren, waarbij je in gedachten houdt dat alleen alfanumerieke tekens, streepjes en underscores zijn toegestaan voor de appnaam:<\/p>\n<pre><code class=\"language-bash\">curl -s \"https:\/\/laravel.build\/example-kinsta-app\" | bash<\/code><\/pre>\n<p>Nadat het installatieproces is voltooid, ga je naar de projectmap en gebruik je Sail om je nieuwe project uit te voeren door het volgende commando in de terminal in te voeren:<\/p>\n<pre><code class=\"language-bash\">.\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Sail zal zijn ingebouwde oplossing gebruiken om je Laravel project uit te voeren met behulp van Docker, en zodra het klaar is, is je applicatie klaar op <code>http:\/\/localhost<\/code>.<\/p>\n<h3>Laravel 10 installeren op Windows 10 en 11<\/h3>\n<p><a href=\"https:\/\/docs.docker.com\/desktop\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker Desktop<\/a> kan worden gebruikt om Laravel 10 snel te installeren op Windows. Maar of je nu Windows 10 of 11 gebruikt, je moet eerst een van de volgende twee opties op je machine inschakelen:<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/install\" target=\"_blank\" rel=\"noopener noreferrer\">Windows Subsystem for Linux 2 (WSL2)<\/a><\/strong> is een Windows besturingssysteemfeature waarmee je een Linux bestandssysteem en Linux commandoregeltools rechtstreeks op Windows kunt draaien.<\/li>\n<li><strong><a href=\"https:\/\/learn.microsoft.com\/en-us\/virtualization\/hyper-v-on-windows\/quick-start\/enable-hyper-v\" target=\"_blank\" rel=\"noopener noreferrer\">Hyper-V backendfeature<\/a><\/strong>\u00a0hiermee kun je een softwareversie van een computer maken en bedienen, bekend als een virtuele machine.<\/li>\n<\/ul>\n<p>Zodra je aan alle <a href=\"https:\/\/docs.docker.com\/desktop\/install\/windows-install\/#install-docker-desktop-on-windows\" target=\"_blank\" rel=\"noopener noreferrer\">Docker eisen<\/a> hebt voldaan, kun je het volgende commando in je terminal uitvoeren:<\/p>\n<pre><code class=\"language-bash\">curl -s https:\/\/laravel.build\/example-kinsta-app | bash<\/code><\/pre>\n<p>Gebruik vervolgens Sail om je applicatie te draaien op <code><a href=\"http:\/\/localhost\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/localhost<\/a><\/code> door het volgende commando in te voeren vanuit de hoofdmap van je nieuw ge\u00efnstalleerde Laravel 10 project:<\/p>\n<pre><code class=\"language-bash\">.\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Even terzijde: veel developers verkiezen Linux OS boven andere besturingssystemen omdat ze daarmee effici\u00ebnter en sneller kunnen werken. Met WSL kun je genieten van <a href=\"https:\/\/ubuntu.com\/tutorials\/install-ubuntu-on-wsl2-on-windows-10#1-overview\" target=\"_blank\" rel=\"noopener noreferrer\">Ubuntu<\/a>&#8217;s veiligheid, prestaties en gamingcompatibiliteit. Ubuntu is een Linux distributie of versie van Linux die bekend staat om zijn gebruiksvriendelijkheid en gebruiksgemak.<\/p>\n<p>Het is aan te raden <a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Visual Studio Code<\/a> te gebruiken en de offici\u00eble Microsoft <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.remote-wsl\" target=\"_blank\" rel=\"noopener noreferrer\">WSL extensie<\/a> te installeren om elke map in het Windows Subsysteem voor Linux te kunnen openen, en te profiteren van de volledige featureset van vscode. Daarnaast is de <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.vscode-remote-extensionpack\" target=\"_blank\" rel=\"noopener noreferrer\">Remote Development<\/a> extensie een andere optie waarnaar verwezen wordt in de Laravel documentatie.<\/p>\n<h3>Laravel 10 installeren met Composer<\/h3>\n<p>Of je nu macOS of Windows gebruikt, met Composer kun je in een mum van tijd aan de slag met Laravel 10.<\/p>\n<p>Je moet er eerst voor zorgen dat je PHP \u2264 8.1, node, npm en Composer op je machine hebt ge\u00efnstalleerd.<\/p>\n<ul>\n<li><strong>Voor macOS:<\/strong> Composer kun je installeren met <a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener noreferrer\">Homebrew<\/a>.<\/li>\n<li><strong>Voor Windows:<\/strong> De laatste stabiele versie van Composer kun je downloaden van de <a href=\"https:\/\/getcomposer.org\/doc\/00-intro.md#installation-windows\" target=\"_blank\" rel=\"noopener noreferrer\">offici\u00eble Composer website<\/a>.<\/li>\n<\/ul>\n<p>Zodra je dat hebt gedaan, kun je Laravel Installer globaal installeren en gebruiken om je nieuwe Laravel 10 applicatie te installeren:<\/p>\n<pre><code class=\"language-bash\">composer global require laravel\/installer\nlaravel new example-kinsta-app<\/code><\/pre>\n<p>Of je kunt direct een nieuwe Laravel 10 app maken met alleen Composer:<\/p>\n<pre><code class=\"language-bash\">composer create-project laravel\/laravel example-kinsta-app<\/code><\/pre>\n<h2>Zo installeer je Laravel 11<\/h2>\n<p>We zijn nog een jaar verwijderd van de release van Laravel 11. Laravel 11 is momenteel echter wel beschikbaar om de features ervan te testen. Niet alleen is het te gebruiken, maar het bevat ook <a href=\"https:\/\/github.com\/laravel\/framework\/pulls?q=is%3Apr+is%3Amerged+%5B11.x%5D+in%3Atitle\" target=\"_blank\" rel=\"noopener noreferrer\">enkele samengevoegde PR&#8217;s<\/a> op GitHub, zoals het laten vallen van PHP 8.1 ondersteuning.<\/p>\n<p>De <code>--dev<\/code> flag in Laravel Installer installeert de master branch van de <code>laravel\/laravel<\/code> repository, en nu Laravel 10 uit is, zal Laravel 11 beschikbaar zijn op de master branch. Als je Laravel Installer gebruikt, hoef je alleen maar dit commando in je terminal uit te voeren:<\/p>\n<pre><code class=\"language-php\">laravel new example-kinsta-app --dev<\/code><\/pre>\n<p>Of als je liever <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a> gebruikt:<\/p>\n<pre><code class=\"language-php\">composer create-project --prefer-dist laravel\/laravel example-kinsta-app dev-master<\/code><\/pre>\n<p>Om het commando Composer beter te begrijpen, volgt hier een korte uitleg:<\/p>\n<ul>\n<li><strong><code>laravel\/laravel<\/code>:<\/strong> Het pakket voor de Laravel installatie<\/li>\n<li><strong><code>example-kinsta-app<\/code>:<\/strong> De nieuwe directory voor je nieuwe project (kan gewijzigd worden)<\/li>\n<li><strong><code>dev-master<\/code>:<\/strong> De volgende versie van Laravel (in dit geval Laravel 11)<\/li>\n<\/ul>\n<p>Na de installatie van Laravel 11 kun je de versie bevestigen door naar de nieuwe map <strong>example-kinsta-app<\/strong> te navigeren en dit Artisan commando uit te voeren:<\/p>\n<pre><code class=\"language-php\">$ php artisan --version\nLaravel Framework 11.x-dev<\/code><\/pre>\n<h2>Zo upgrade je een project naar Laravel 10<\/h2>\n<p>Kom je in de verleiding om te upgraden naar Laravel 10? Het Laravel coreteam werkt hard aan documentatie om een naadloze en ongecompliceerde upgradehandleiding te geven met aandacht voor alle mogelijke breaking veranderingen. Bekijk gerust de <a href=\"https:\/\/laravel.com\/docs\/master\/upgrade#upgrade-10.0\" target=\"_blank\" rel=\"noopener noreferrer\">offici\u00eble Laravel 10 upgradehandleiding<\/a>.<\/p>\n<p>Je wil ook <a href=\"https:\/\/laravelshift.com\/shifts\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Shift<\/a> in de gaten houden nu Laravel 10 is uitgebracht. Laravel Shift biedt een eenvoudige en geautomatiseerde aanpak voor het upgraden van je Laravel versie.<\/p>\n<h2>Zo deploy je Laravel 10 projecten<\/h2>\n<p>Het deployen van Laravel 10 verschilt niet van het <a href=\"https:\/\/docs.sevalla.com\/templates\/overview#laravel\">deployen van Laravel 9 projecten<\/a>.<\/p>\n<p>Hier zijn de serververeisten:<\/p>\n<ul>\n<li>PHP \u2264 8.1<\/li>\n<li>Ctype PHP extensie<\/li>\n<li>cURL PHP extensie<\/li>\n<li>DOM PHP extensie<\/li>\n<li>Fileinfo PHP extensie<\/li>\n<li>Mbstring PHP extensie<\/li>\n<li>OpenSSL PHP extensie<\/li>\n<li>PCRE PHP extensie<\/li>\n<li>PDO PHP extensie<\/li>\n<li>Tokenizer PHP extensie<\/li>\n<li>XML PHP extensie<\/li>\n<li>Filter PHP extensie<\/li>\n<li>Hash PHP extensie<\/li>\n<li>Sessie PHP extensie<\/li>\n<\/ul>\n<p>Je kunt <a href=\"https:\/\/sevalla.com\/application-hosting\/\">je Laravel 10 project<\/a> in enkele minuten deployen en hosten op Kinsta, omdat Laravel een van de lange lijsten is van <a href=\"https:\/\/docs.sevalla.com\/applications\/reference\/faqs\">ondersteunde frameworks<\/a> voor gehoste apps.<\/p>\n<h3>Laravel 10 deployen op Kinsta: stap voor stap handleiding<\/h3>\n<p>Er zijn verschillende voordelen aan het <a href=\"https:\/\/sevalla.com\/application-hosting\/\">hosten en deployen van je Laravel applicaties op Kinsta<\/a>, waaronder het feit dat je je niet druk hoeft te maken over de deploymentconfiguratie.<\/p>\n<p>Kinsta biedt een gebruiksvriendelijke maar krachtige tool voor het deployen van applicaties, het verbinden met databases, en het bewaken van live prestaties. Deze tool staat bekend als <a href=\"https:\/\/kinsta.com\/nl\/mykinsta\/\">MyKinsta<\/a>, en in deze sectie zullen we je door de stappen leiden om een Laravel 10 applicatie te deployen.<\/p>\n<h4>1. Bereid je applicatie voor<\/h4>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-22.png\" alt=\"Een voorbeeld van een Laravel 10 applicatiepagina, met bovenaan \"Laravel Kinsta\", gevolgd door een raster van vier inhoudsvakken met de labels \"Kinsta\", \"Laracasts\", \"Laravel News\" en \"Vibrand Ecosystem\".\" width=\"1024\" height=\"473\"><figcaption class=\"wp-caption-text\">De homepage van een Laravel 10 applicatie die op Kinsta wordt gedeployed.<\/figcaption><\/figure>\n<p>Ervan uitgaande dat je lokaal een Laravel 10 applicatie hebt, moeten we ervoor zorgen dat die een <a href=\"https:\/\/kinsta.com\/blog\/what-is-github\/\">GitHub repository beschikbaar<\/a> heeft. We zullen deze repository gebruiken om de applicatie later te deployen.<\/p>\n<p>Je kunt in de hoofdmap van je applicatie een <strong>.htaccess<\/strong> bestand opnemen dat het volgende bevat:<\/p>\n<pre><code class=\"language-bash\">&lt;IfModule mod_rewrite.c&gt;\nRewriteEngine On\nRewriteRule ^(.*)$ public\/$1 [L]\n&lt;\/IfModule&gt;<\/code><\/pre>\n<p>Voor Laravel leidt dit alle verzoeken om naar <strong>public\/index.php<\/strong>. Indien nodig kun je dit commando echter bijwerken tijdens het toevoegen van je applicatie (<strong>Set up your processes<\/strong> stap) of na het deployen, op de <strong>Processes<\/strong>\u00a0pagina van de applicatie. Je kunt gebruiken:<\/p>\n<ul>\n<li><code>heroku-php-apache2 \/public<\/code><\/li>\n<li><code>php artisan serve --host 0.0.0.0 --port 8080<\/code><\/li>\n<\/ul>\n<h4>2. Log in bij MyKinsta<\/h4>\n<figure style=\"width: 999px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-23.png\" alt=\"Een inlogformulier voor MyKinsta, met bovenaan \"MyKinsta Login\" gevolgd door de velden \"E-mail en \"Wachtwoord\", met onderaan een paarse knop \"Login\".\" width=\"999\" height=\"674\"><figcaption class=\"wp-caption-text\">De inlogpagina van MyKinsta.<\/figcaption><\/figure>\n<p>Ga naar de <a href=\"https:\/\/my.kinsta.com\/login?lang=nl\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta inlogpagina<\/a> en voer je e-mailadres en wachtwoord in. Als je nog geen account hebt, kun je <a href=\"https:\/\/kinsta.com\/nl\/registreren\/?product_type=app-db\">een nieuw account registreren<\/a> en krijg je $20 tegoed in je eerste maand bij <a href=\"https:\/\/kinsta.com\/nl\/prijzen\/?plan=visits-business1#application-hosting\">elk mogelijk abonnement<\/a>.<\/p>\n<h4>3. Autoriseer Kinsta op GitHub<\/h4>\n<p>Zodra je inlogt, zul je merken dat het dashboard opties heeft als\u00a0 <a href=\"https:\/\/kinsta.com\/nl\/blog\/cloudplatform-voor-developers\/#wp\">een WordPress site maken<\/a>,\u00a0<a href=\"https:\/\/kinsta.com\/nl\/blog\/cloudplatform-voor-developers\/#app\">een applicatie maken<\/a>, of <a href=\"https:\/\/kinsta.com\/nl\/blog\/cloudplatform-voor-developers\/#db\">een database maken<\/a>.\u00a0We zullen op de <strong>Connect GitHub<\/strong> knop drukken om te <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">integreren met GitHub<\/a>.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-24.png\" alt=\"Een gedeelte van het MyKinsta dashboard, met drie rechthoekige tegels: \"WordPress site\" met een actieknop \"Create a site\"; \"Application\" met een \"Connect GitHub\" actieknop; en \"Database\" met een \"Create database\" actieknop.\" width=\"1024\" height=\"430\"><figcaption class=\"wp-caption-text\">Het dashboard van MyKinsta.<\/figcaption><\/figure>\n<p>Klik vervolgens op de knop <strong>Continue with GitHub<\/strong>. Als je nog niet ingelogd bent op GitHub, krijg je de optie om in te loggen. Dan kun je de Kinsta GitHub applicatie machtigen om toegang te krijgen tot je GitHub account door <strong>Authorize Kinsta<\/strong>\u00a0te selecteren.<\/p>\n<p>Tenslotte zal GitHub je browser omleiden naar MyKinsta om verder te gaan met het instellen van de applicatie.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-25.png\" alt=\"Een modaal venster met de tekst \"GitHub Integration: Connect Kinsta to your Gitub namespace here to import your existing repositories\" met een witte knop \"Cancel\" en een paarse knop \"Continue with GitHub\".\" width=\"1024\" height=\"271\"><figcaption class=\"wp-caption-text\">MyKinsta verbinden met GitHub.<\/figcaption><\/figure>\n<p>Nadat je verbonden bent met GitHub, krijg je de <strong>Add Application<\/strong> popup\/modal te zien, die een dropdownmenu heeft om een GitHub repository te selecteren. Klik op het GitHub repository veld en selecteer <strong>Edit GitHub permissions <\/strong>in de dropdown.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-26.png\" alt=\"Het formulier \"Add application\" in MyKinsta, gericht op de subsectie \"Application details\", met de tekst \"Select branch\" gevolgd door twee velden: \"GitHub repository\" en \"Default branch\".\" width=\"1024\" height=\"430\"><figcaption class=\"wp-caption-text\">Een applicatie toevoegen aan MyKinsta.<\/figcaption><\/figure>\n<p>Dit opent een nieuw tabblad in je browser naar de GitHub webpagina, waar je kunt kiezen tot welke gegevens Kinsta toegang krijgt. In plaats van toegang tot alle repositories in te schakelen, kun je overwegen om alleen die repositories te kiezen waarvan je wilt dat Kinsta ze gebruikt.<\/p>\n<p>Klik op <strong>Only select repositories<\/strong> en kies de repository die je wilt deployen.<\/p>\n<figure style=\"width: 674px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-27.png\" alt=\"Een \"Install Kinsta\" prompt modal, met opties om toegang te verlenen voor \"All repositories\" of \"Only select repositories\", gevolgd door een groene \"Install\" knop.\" width=\"674\" height=\"1024\"><figcaption class=\"wp-caption-text\">Kinsta toegang verlenen tot GitHub.<\/figcaption><\/figure>\n<p>Klik dan op <strong>Install<\/strong>, en je bent helemaal klaar!<\/p>\n<p>Als je terugkeert naar MyKinsta en op het <strong>GitHub repository<\/strong> veld klikt, zou de geautoriseerde repository zichtbaar moeten zijn. Bovendien kun je het selectievakje <strong>Automatische deployment bij commit<\/strong> aanvinken om MyKinsta in staat te stellen je applicatie automatisch te deployen zodra je wijzigingen aanbrengt in de GitHub repository.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-28.png\" alt=\"De applicatiesectie \"Select branch\" in MyKinsta, met de twee velden \"GitHub repository\" en \"Default branch\" en een aangevinkt selectievakje met het label \"Automatic deployment on commit\".\" width=\"1024\" height=\"287\"><figcaption class=\"wp-caption-text\">Het selecteren van een repository branch voor MyKinsta.<\/figcaption><\/figure>\n<h4>4. Voeg basisgegevens van de applicatie toe<\/h4>\n<p>Je kunt de applicatie nu een naam geven die alleen in het dashboard zal worden gebruikt en kiezen uit 25 datacenterlocaties, zodat je je applicatie kunt plaatsen op de geografische locatie die het dichtst bij je gebruikers ligt. Als je hulp nodig hebt bij het bepalen welk <a href=\"https:\/\/kinsta.com\/nl\/docs\/service-informatie\/datacenter-locaties\/\">datacenter<\/a> ideaal is voor je applicatie, bekijk dan onze handleiding voor <a href=\"https:\/\/kinsta.com\/nl\/docs\/service-informatie\/datacenter-locaties\/\">het kiezen van de juiste datacenterlocatie<\/a>.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-29.png\" alt=\"Het gedeelte \"Basic details\" van het MyKinsta applicatiecreatieproces, met velden voor \"Application name\" en \"Data center location\".\" width=\"1024\" height=\"423\"><figcaption class=\"wp-caption-text\">De basisgegevens van een applicatie toevoegen.<\/figcaption><\/figure>\n<h4>5. Voeg omgevingsvariabelen toe<\/h4>\n<p>De volgende sectie is voor het toevoegen van <a href=\"https:\/\/kinsta.com\/blog\/what-is-an-environment-variable\/\">omgevingsvariabelen<\/a> en de belangrijkste variabele is de <code>APP_KEY<\/code>.<\/p>\n<p>Als je nog geen sleutel in je .env bestand hebt, kun je er een genereren met een <a href=\"https:\/\/generate-random.org\/laravel-key-generator\" target=\"_blank\" rel=\"noopener noreferrer\">online Laravel sleutelgenerator<\/a>. Plaats dan <code>APP_KEY<\/code> in het veld <strong>Sleutel 1<\/strong> (sleutel 1) en plaats de gegenereerde app key in het veld <strong>Waarde 1 <\/strong>(Waarde 1).<\/p>\n<p>Selecteer tenslotte <strong>Beschikbaar tijdens runtime <\/strong>en <strong>Beschikbaar tijdens bouwproces<\/strong>.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-30.png\" alt=\"Het toepassingsgedeelte \"Environment variables\" in MyKinsta, met velden voor \"Key 1\" en \"Value 1\", evenals selectievakjes voor \"Available during runtime\" en \"Available during build process\".\" width=\"1024\" height=\"408\"><figcaption class=\"wp-caption-text\">Toevoegen van omgevingsvariabelen in MyKinsta.<\/figcaption><\/figure>\n<h4>6. Configureer de buildomgeving<\/h4>\n<p>Het fijne hier is dat je niets hoeft te configureren! Je kunt doorgaan door op de knop <b>Doorgaan <\/b>te klikken, en voil\u00e0: je hebt de configuratie van de bouwomgeving voltooid. Echter, als je de bouwresources wilt verbeteren om sneller te kunnen bouwen, kun je je voorkeur kiezen uit het veld <strong>Build resources<\/strong>.<\/p>\n<p>Het <strong>Build path<\/strong> veld is optioneel. Je kunt het leeg laten, en MyKinsta zal de hoofdmap gebruiken.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-31.png\" alt=\"Het toepassingsgedeelte \"Build Environment\" in MyKinsta, met velden en selectievakken voor \"Build resources\", \"Set up container image automatically\" en \"Use Dockerfile to set up container image\".\" width=\"1024\" height=\"742\"><figcaption class=\"wp-caption-text\">De bouwomgeving van de applicatie configureren.<\/figcaption><\/figure>\n<h4>7. Stel processen en betaalmethode in<\/h4>\n<p>Vul voor het onderdeel Resources elk veld in met de volgende informatie:<\/p>\n<ul>\n<li><strong>Proces naam:<\/strong> De naam die in de lijst met processen van je applicatie wordt weergegeven.<\/li>\n<li><strong>Proces type:<\/strong> Kies zorgvuldig, want dit kan niet worden veranderd als het eenmaal is ingesteld. Je kunt echter extra processen toevoegen en wijzigen, zoals een achtergrondtaak, op de pagina Processes van je applicatie na het deployen.<\/li>\n<li><strong>Start commandp:<\/strong> Het &#8220;Start&#8221; commando voor je proces (niet verplicht).<\/li>\n<li><strong>Pod grootte:<\/strong> De pod capaciteit die je verwacht nodig te hebben voor je proces.<\/li>\n<li><strong>Instance aantal:<\/strong> Het aantal instances voor je proces (maximaal 50).<\/li>\n<\/ul>\n<p>Merk op dat je gewoon op <strong>Doorgaan <\/strong>kunt klikken zonder het <strong>Start<\/strong> commando veld in te vullen, omdat Kinsta automatisch het vereiste commando detecteert tijdens de eerste deployment.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-32.png\" alt=\"De sectie \"Add application: Set up your process\" in MyKinsta, met velden voor \"Process name\", \"Process type\", \"Start command\", \"Pod size\" en \"Instance count\".\" width=\"1024\" height=\"640\"><figcaption class=\"wp-caption-text\">Het instellen van de processen van de applicatie.<\/figcaption><\/figure>\n<p>Bekijk voor de laatste stap de berekende maandelijkse gebruikskosten voor je app, en bevestig dan je betaalmethode. Als je klaar bent, klik je op de knop <strong>Betaalmethode bevestigen<\/strong>.<\/p>\n<figure style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-33.png\" alt=\"Het betalingsgegevensscherm in MyKinsta, met \"Monthly usage costs\" en \"Payment method\", waarvan de laatste een Visa kaart vermeldt.\" width=\"902\" height=\"744\"><figcaption class=\"wp-caption-text\">Bevestig de betalingsgegevens.<\/figcaption><\/figure>\n<p>En je bent klaar! Kinsta doet al het werk op de achtergrond om je aanvraag te bedienen.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-34.png\" alt=\"Het tabblad \"Applications\" in Mykinsta, met een ge\u00efmplementeerde applicatie met de naam \"example-kinsta-app\", samen met de bron, het type en de laatste wijzigingsdatum.\" width=\"1024\" height=\"335\"><figcaption class=\"wp-caption-text\">Het laden van het deployment proces van de applicatie.<\/figcaption><\/figure>\n<p>Nu heb je toegang tot alle details van het rolloutproces, en tot de tijdelijke URL van je live app, die je later kunt vervangen door je eigen domein.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-35.png\" alt=\"Het gedeelte \"Deployment details\" in MyKinsta na het succesvol deployen van de app, met de installatie informatie van de applicatie samen met build- en deploymentverificatiemeldingen.\" width=\"1024\" height=\"746\"><figcaption class=\"wp-caption-text\">Succesvolle deployment van Laravel 10 applicatie op MyKinsta.<\/figcaption><\/figure>\n<p>Je Laravel 10 applicatie staat nu live op Kinsta, maar wat als je in productie een wijziging moet aanbrengen? Wat als we het <code>href<\/code> attribuut van een anchor tag willen veranderen?<\/p>\n<p>Omdat we de optie <strong>Automatische deployment bij commit<\/strong> hebben geactiveerd, zal MyKinsta elke wijziging die we aanbrengen in de uitgezette branche detecteren en automatisch de live app dienovereenkomstig bijwerken.<\/p>\n<h4>8. Verbind Lavarel 10 met MySQL database<\/h4>\n<p>Nu we onze Laravel 10 applicatie hebben gedeployd, kunnen we moeiteloos een database bouwen en die koppelen aan onze applicatie. Je hoeft alleen maar te klikken op <strong>Applicaties<\/strong> in het navigatiemenu aan de linkerkant, dan <strong>Dienst toevoegen <\/strong>en <strong>Database<\/strong> selecteren.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-36.png\" alt=\"De \"Create a database\" optie in MyKinsta, met velden voor het verstrekken van de basisinformatie van de database, gevolgd door een paarse \"Create database\" knop.\" width=\"1024\" height=\"640\"><figcaption class=\"wp-caption-text\">Het toevoegen van een nieuwe database in MyKinsta.<\/figcaption><\/figure>\n<p>Nadat je alle velden hebt ingevuld, klik je op <strong>Create d<\/strong><strong>a<\/strong><strong>tabase<\/strong>. Dit zal een nieuwe database opzetten, klaar voor interne en externe verbindingen. In ons scenario hebben we een interne verbinding nodig met het Laravel 10 project dat we ingezet hebben.<\/p>\n<p>Om dat te bereiken hoef je alleen maar te klikken op <strong>Applicatie toevoegen <\/strong>in de sectie <strong>Interne verbindingen <\/strong>en je applicatie te selecteren. Je kunt het vakje <strong>Omgevingsvariabelen toevoegen <\/strong>aan de applicatie aanvinken en MyKinsta zal alle <code>.env<\/code> variabelen invullen die je applicatie nodig heeft.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-37.png\" alt=\"De optie \"Add internal connection\" in MyKinsta om een database met een applicatie te verbinden, met sleutelwaardevelden gevolgd door een knop \"Add connection\".\" width=\"1024\" height=\"640\"><figcaption class=\"wp-caption-text\">Een database verbinden met een Laravel 10 applicatie.<\/figcaption><\/figure>\n<p>Daarmee is je Laravel 10 applicatie gedeployd en verbonden met een database.<\/p>\n<h2>Zo kun je bijdragen aan Laravel 10<\/h2>\n<p>Hoewel Laravel wordt onderhouden door een coreteam, wordt het actief ontwikkeld door meer dan <a href=\"https:\/\/github.com\/laravel\/framework\/graphs\/contributors\" target=\"_blank\" rel=\"noopener noreferrer\">3.000 vrijwillige medewerkers<\/a>.<\/p>\n<p>Wil jij een van die medewerkers zijn en de toekomst van Laravel helpen vormgeven? Als je ja hebt geantwoord, kun je developers over de hele wereld helpen door een nieuwe feature toe te voegen, een bug op te lossen of door bijvoorbeeld een verwarrend deel van de documentatie te herschrijven.<\/p>\n<p>Om bij te dragen aan Laravel 10, is dit wat je moet doen:<\/p>\n<ol>\n<li>Ga naar <a href=\"https:\/\/github.com\/laravel\/framework\/pulls?page=2&#038;q=is%3Apr+is%3Amerged+10.x\" target=\"_blank\" rel=\"noopener noreferrer\">de GitHub repository van Laravel<\/a> en bekijk de pull requests getagd met [10.x] in de titel. Dit zal je een duidelijk beeld geven van alle pull requests voor Laravel 10. Als een van de PR&#8217;s betrekking heeft op een bijdrage die je van plan was te leveren, kijk dan of je die kunt verbeteren.<\/li>\n<li>Als de door jou geplande bijdrage nog niet door iemand anders is aangepakt, dan kun je zelf een PR maken.<\/li>\n<li>Niet alles is de moeite waard om aan de codebase van het framework toe te voegen. Streef er daarom naar om alleen verbeteringen door te voeren die in de toekomst gemakkelijk te onderhouden zijn en de overgrote meerderheid van de Laravel gemeenschap zullen helpen.<\/li>\n<li>Zorg ervoor dat je je houdt aan <a href=\"https:\/\/laravel.com\/docs\/master\/contributions\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel&#8217;s richtlijnen voor bijdrages<\/a>\u00a0voor een betere kans dat je wijzigingen worden samengevoegd met het framework.<\/li>\n<\/ol>\n<p>Een andere reden om fan te zijn van Laravel 10 is dat je geld kunt verdienen voor je bijdragen met bug hunts! Die bekijken we hierna.<\/p>\n<h3>Laravel 10 bug hunt wedstrijd<\/h3>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-20.png\" alt=\"Het Laravel 10 logo gevolgd door een groen tekenfilminsect met grijze strepen.\" width=\"1024\" height=\"576\"><figcaption class=\"wp-caption-text\">Laravel 10 bug hunt wedstrijd.<\/figcaption><\/figure>\n<p>Laravel 10 organiseerde een wedstrijd waarin een willekeurige bijdrager kans maakt op $1.000. Dit was de eerste wedstrijd in zijn soort in de geschiedenis van Laravel. Hij was bedoeld om de community aan te moedigen verborgen bugs in Laravel 10 te vinden en te patchen.<\/p>\n<p>De regels waren eenvoudig:<\/p>\n<ul>\n<li>Alleen PR&#8217;s ingediend bij de <code>laravel\/framework<\/code> repository&#8217;s 10.x branch komen in aanmerking.<\/li>\n<li>Alleen &#8220;echte&#8221; bugfixes kwamen in aanmerking. Nieuwe features, refactoring en typefouten werden niet in aanmerking genomen.<\/li>\n<li>Elke bugfix moet ondersteund worden door een test.<\/li>\n<li>Geaccepteerde bugfixes werden gelabeld op GitHub, en na afloop van de wedstrijd wordt een willekeurige winnaar bekend gemaakt.<\/li>\n<\/ul>\n<p>De wedstrijd was voorbij toen de eerste stabiele versie van Laravel 10 werd uitgebracht op 14 februari 2023.<\/p>\n<h2>Samenvatting<\/h2>\n<p>Tot nu toe lijkt Laravel 10 uiterst veelbelovend, en we zijn enthousiast over alle mooie dingen die het de PHP wereld brengt.<\/p>\n\n<p>Als je op zoek bent naar meer <a href=\"https:\/\/kinsta.com\/nl\/blog\/prestaties-laravel\/\">manieren om de prestaties van je Laravel app te verbeteren<\/a>, kun je overwegen over te stappen naar een premium hostingprovider. <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Kinsta&#8217;s Applicatie Hosting oplossingen<\/a> behoren tot de snelste, veiligste en gemakkelijkst te gebruiken in de sector. Ze zijn speciaal ontworpen met developers in gedachten, en bieden stroomlijning van je productieproces en 24\/7 deskundige ondersteuning van onze eigen ervaren developers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Heb je je na meer dan tien jaar sinds de introductie van het razend populaire Laravel framework wel eens afgevraagd: &#8220;Wat kan Laravel PHP developers nog &#8230;<\/p>\n","protected":false},"author":266,"featured_media":50458,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[866],"class_list":["post-50457","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features<\/title>\n<meta name=\"description\" content=\"In dit artikel nemen we je mee op reis door de nieuwe features, fixes en recent afgeschreven methoden en pakketten van Laravel 10.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features\" \/>\n<meta property=\"og:description\" content=\"In dit artikel nemen we je mee op reis door de nieuwe features, fixes en recent afgeschreven methoden en pakketten van Laravel 10.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-21T12:42:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-30T13:11:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mostafa Said\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"In dit artikel nemen we je mee op reis door de nieuwe features, fixes en recent afgeschreven methoden en pakketten van Laravel 10.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mostafa Said\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"30 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/\"},\"author\":{\"name\":\"Mostafa Said\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\"},\"headline\":\"Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features\",\"datePublished\":\"2023-02-21T12:42:52+00:00\",\"dateModified\":\"2023-06-30T13:11:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/\"},\"wordCount\":5212,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/\",\"name\":\"Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png\",\"datePublished\":\"2023-02-21T12:42:52+00:00\",\"dateModified\":\"2023-06-30T13:11:10+00:00\",\"description\":\"In dit artikel nemen we je mee op reis door de nieuwe features, fixes en recent afgeschreven methoden en pakketten van Laravel 10.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\",\"name\":\"Mostafa Said\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g\",\"caption\":\"Mostafa Said\"},\"description\":\"I\u2019m Mostafa, a full-stack developer with a knack for all things Laravel, Inertia, and JavaScript frameworks. When I'm not coding, you can find me sharing my knowledge through tutorials, diving into hackathons (and winning a few), and spreading the love for tech by teaching what I've learned.\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/mostafasaid\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features","description":"In dit artikel nemen we je mee op reis door de nieuwe features, fixes en recent afgeschreven methoden en pakketten van Laravel 10.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/","og_locale":"nl_NL","og_type":"article","og_title":"Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features","og_description":"In dit artikel nemen we je mee op reis door de nieuwe features, fixes en recent afgeschreven methoden en pakketten van Laravel 10.","og_url":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-02-21T12:42:52+00:00","article_modified_time":"2023-06-30T13:11:10+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png","type":"image\/png"}],"author":"Mostafa Said","twitter_card":"summary_large_image","twitter_description":"In dit artikel nemen we je mee op reis door de nieuwe features, fixes en recent afgeschreven methoden en pakketten van Laravel 10.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Mostafa Said","Geschatte leestijd":"30 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/"},"author":{"name":"Mostafa Said","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996"},"headline":"Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features","datePublished":"2023-02-21T12:42:52+00:00","dateModified":"2023-06-30T13:11:10+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/"},"wordCount":5212,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/","url":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/","name":"Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png","datePublished":"2023-02-21T12:42:52+00:00","dateModified":"2023-06-30T13:11:10+00:00","description":"In dit artikel nemen we je mee op reis door de nieuwe features, fixes en recent afgeschreven methoden en pakketten van Laravel 10.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-10\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/02\/laravel-10-1.png","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-10\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/"},{"@type":"ListItem","position":3,"name":"Wat is er nieuw in Laravel 10: Een uitgebreide blik op de nieuwste updates en features"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996","name":"Mostafa Said","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g","caption":"Mostafa Said"},"description":"I\u2019m Mostafa, a full-stack developer with a knack for all things Laravel, Inertia, and JavaScript frameworks. When I'm not coding, you can find me sharing my knowledge through tutorials, diving into hackathons (and winning a few), and spreading the love for tech by teaching what I've learned.","url":"https:\/\/kinsta.com\/nl\/blog\/author\/mostafasaid\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/50457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/266"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=50457"}],"version-history":[{"count":17,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/50457\/revisions"}],"predecessor-version":[{"id":50865,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/50457\/revisions\/50865"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/translations\/dk"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/translations\/jp"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/50457\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/50458"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=50457"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=50457"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=50457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}