Nu har det gått över ett decennium sedan introduktionen av det mycket populära ramverket Laravel. Det har säkert hänt att du har undrat: ”Vad mer kan Laravel erbjuda PHP-utvecklare?”

Det har redan förenklat PHP-utvecklingen för både nybörjare och professionella utvecklare. Vissa hävdar till och med att det har fått utvecklare att tro att PHP är det enklaste programmeringsspråket som finns.

Har Laravel fortfarande fler överraskningar i beredskap för Laravel-utvecklare? Eller har man uttömt alla möjliga medel för att stödja PHP-utvecklare?

Vi vet åtminstone att Laravel 10 har mycket att erbjuda. Detta är vad vi kommer att avslöja i den här artikeln. Nu tar vi med dig på en resa genom Laravel 10’s nya funktioner, korrigeringar och nyligen avskrivna metoder och paket.

Laravel Utgivningsschema

Laravels kärnteam brukade släppa två större versioner årligen (en var sjätte månad).

Utgivningscykeln ändrades dock när Taylor Otwell, skaparen av Laravel, meddelade att en enda större version nu skulle släppas varje år. Som ett resultat så kunde kärnteamet och Laravel’s community ägna mer tid och arbete åt en specifik version av ramverket och införa nya kraftfulla funktioner utan att göra några banbrytande ändringar.

Laravel 10 var planerat att släppas den 7 februari år 2023, efter att Laravel 9 hade släppts den 8 februari år 2022. Teamet behövde dock mer tid för att färdigställa sitt konstverk och Laravel 10 publicerades slutligen den 14 februari år 2023.

Laravel 11 förväntas nu släppas under första kvartalet i februari år 2024.

Enligt supportpolicyn så erbjuds det dessutom buggfixar i 18 månader och säkerhetsuppdateringar i två år för alla Laravel-versioner.

Nedan så följer det förväntade schemat för felrättningar och säkerhetsuppdateringar:

  • Laravel 9 kommer att fortsätta att få buggfixar fram till den 8 augusti år 2023 och säkerhetsuppdateringar fram till den 6 februari år 2024.
  • Laravel 10 kommer att få buggfixar fram till den 6 augusti år 2024 och säkerhetsfixar fram till den 4 februari år 2025.
  • Laravel 11 förväntas få felrättningar fram till den 5 augusti år 2025 och säkerhetsrättningar fram till den 3 februari år 2026.

Bör du uppgradera till Laravel 10?

Det är viktigt att komma ihåg att du inte alltid behöver uppgradera din applikations Laravel-version till den senaste versionen så fort som en ny version släpps.

Laravel är ett ramverk med öppen källkod. Detta innebär att varje gång som du installerar en ny Laravel-instans på din maskin så äger du ramverkets kodbas. Så även om den ramversion som din app använder inte längre stöds kommer appen fortfarande att fungera; du måste bara underhålla den själv.

Som ett resultat av detta så föreslås det generellt att stabiliteten i applikationen ska prioriteras framför ramuppgraderingar.

Du bör med andra ord överväga att uppgradera till Laravel 10 när:

  • du vill använda dig av Laravel 10: Applikationen är stabil med sin nuvarande version och fungerar utan problem.
  • Den nya versionen antingen lägger till en funktion som din applikation kräver eller åtgärdar ett problem som din applikation upplever.
  • Applikationen kommer att vara väl testad innan uppgraderingsändringarna skjuts in i produktionen.

Laravel 10’s heta uppdateringar

 

Laravel 10.
Laravel 10.

 

Kinsta är ett stort fan av Laravel. Därför har vi samlat höjdpunkterna i Laravel 10 i en enda artikel. Den kan du använda som referens och guide för att använda alla nya funktioner. Vi rekommenderar därför att du bokmärker den här sidan och återbesöker den då och då.

Nya funktioner och uppdateringar i Laravel 10

Det råder ingen tvekan om att det mest spännande med en ny version är att nya funktioner läggs till. Så vi ska börja med att ta en titt på de nya funktionerna och uppdateringarna i Laravel 10.

1. PHP 8.1: I hjärtat av Laravel 10

PHP 8.1 är den lägsta erforderliga PHP-versionen i Laravel 10. Vissa PHP 8.1-funktioner, exempelvis readonly properties och array_is_list, används i Laravel 10.

2. Stöd för PHP 8.2

PHP 8.2 släpptes den 8 december år 2022, endast två månader före Laravel 10’s lanseringsdatum. Detta bör dock inte hindra dig från att använda PHP 8.2-funktioner, eftersom Laravel 10 är redo för PHP 8.2.

Faktum är att hela Laravel-ekosystemet, inklusive Forge, Vapor och Envoyer, har stöd för PHP 8.2, och du kan till och med använda PHP 8.2 med Laravel 9. Hur häftigt är inte det?!

3. Uppgradering av officiella Laravel-paket

Det är inte bara ramverket som underhålls professionellt och uppdateras regelbundet, utan även alla officiella paket och ekosystemet.

Nedan så följer en lista över de senaste officiella Laravel-paketen som har uppdaterats för att stödja Laravel 10:

  1. Breeze
  2. Cashier Stripe
  3. Dusk
  4. Horizon
  5. Installer
  6. Jetstream
  7. Passport
  8. Pint
  9. Sail
  10. Scout
  11. Valet

Inertiajs 1.0.1 är en annan godbit för Rails-, Vue-, React- och Svelte-fans och har också stöd för Laravel 10.

4. Uppgradering av Predis-versionen

Predis är en robust Redis-klient för PHP som kan hjälpa dig att få ut så mycket som möjligt av cachelagring för att skapa en fantastisk användarupplevelse. Laravel stödde tidigare både version 1 och 2, men från och med Laravel 10 så stöder ramverket inte längre Predis 1.

Även om Laravel-dokumentationen nämner Predis som paketet för interagering med Redis kan du även använda det officiella PHP-tillägget. Detta tillägg tillhandahåller ett API för kommunikation med Redis-servrar.

5. Inbyggda typdeklarationer

Laravel brukade använda DocBlocks i sin skelettkod för att förtydliga vad en kod gör och vilka typer av parametrar eller svar som man kan förvänta sig. Men tack vare inbyggda typdeklarationer i Laravel 10 så kommer detta att förändras.

Det bästa sättet att förklara denna förändring är med ett enkelt exempel. Istället för att en funktion ser ut så här:

/**
* Determine whether the user can create models.
*
* @param {{ namespacedUserModel }} $user
* @return IlluminateAuthAccessResponse|bool
*/

public function create({{ user }} $user)
{
  //
}

… kommer den att se ut så här:

/**
* Determine whether the user can create models.
*/

public function create({{ user }} $user): bool
{
  //
}

Den här ändringen är helt och hållet till förmån för utvecklaren, eftersom IDE: erna kommer att veta hur den förväntade parametern och svaret ser ut. Som ett resultat så skapas en bättre tydlighet när det inte är möjligt att använda PHP’s ursprungliga typer. Därför så kommer detta att hjälpa kodredigerarna att prestera bättre med funktioner för automatisk komplettering.

6. Alla valideringsregler kan aktiveras som standard

Om du vill göra en valideringsregel som kan aktiveras i Laravel 9 så måste du lägga till en --invokable-flagga efter Artisan-kommandot. Detta är inte längre nödvändigt eftersom alla regler i Laravel 10 är invokable som standard. Du kan alltså köra följande kommando för att skapa en ny invokable regel i Laravel 10:

php artisan make:rule CustomRule

7. Inbyggt stöd för ändring av kolumner

I ett försök att eliminera behovet av paketet DBAL (doctrine/dbal) när man använder change() för att ändra kolumner så infördes en ny funktion i Laravel 10. Den gör det möjligt för utvecklare att använda metoden change() och ändra kolumner med MySQL, PostgreSQL och SQL Server utan att behöva använda extra paket. Detta är en betydande och riskfylld ändring, men vi anser att det är värt det eftersom det eliminerar beroendet av ett extra paket.

För att få en bättre förståelse för den nya funktionen, kan du titta på exemplet nedan:

$table->integer('user_balance')->unsigned()->default(0)->comment('balance'); // `user_balance` is an integer, unsigned, defaults to '0', and column comment is 'balance'

Vi antar att vi har en kolumn för user_balance och att vi vill ändra dess typ. Från och med Laravel 10 så kan vi helt enkelt göra detta:

$table->bigInteger('user_balance')->change(); // This will change `user_balance` to bigInteger instead of just integer

Ovanstående kod kommer att ändra kolumnens typ, men kommer även att ta bort attributen UNSIGNED, DEFAULT och COMMENT. Det är därför viktigt att komma ihåg att lägga till alla attribut när du ändrar typen av en kolumn:

$table->bigInteger('user_balance')->unsigned()->default(0)->comment('balance')->change();

Om du har flera databasanslutningar och redan har installerat DBAL så rekommenderas det att du anropar Schema::useNativeSchemaOperationsIfPossible()-metoden inom boot-metoden i AppProvidersAppServiceProvider. Som ett resultat så kan du använda inhemska schemaoperationer och använda inhemska operationer innan du förlitar dig på paketet (SQLite har exempelvis ännu inte stöd för detta):

use IlluminateSupportFacadesSchema;
class AppServiceProvider extends ServiceProvider
{
  public function boot()
  {
    Schema::useNativeSchemaOperationsIfPossible();
  }
}

8. Column Type Native Retrieval

En annan anmärkningsvärd funktion i Laravel 10 är möjligheten att använda metoden Schema::getColumnType utan att behöva förlita sig på paketet doctrine/dbal. Vi använder för närvarande Schema::getColumnType med DBAL för att få fram kolumntypen. DBAL mappar varje inhemsk kolumntyp till dess DBAL-typekvivalent, och den har inte stöd för många av de kolumntyper som används av Laravel i olika databaser.

I Laravel 10 kommer den nya metoden Schema::getColumnType att returnera den faktiska kolonntypen snarare än dess DBAL-ekvivalent. Den gör det även möjligt att skriva integreringstester för den nya inbyggda kolumnändringsfunktionen. Du kan använda den här funktionen för att antingen få fram datatypnamnet eller hela typdefinitionen för den angivna kolumnen:

Schema::getColumnType('products', 'price'); // decimal

9. Snabbare Hashing-algoritm

xxHash är en Hash-algoritm som är otroligt snabb. Den har en stor slumpmässighet och spridning i utdata samt unikhet för att minska kollisioner. PHP 8.1 ger stöd för xxh128, och Laravel 10 körs på PHP 8.1. Som ett resultat så är det idealiskt att ha en sådan pålitlig hash-algoritm i Laravel 10.

Det är värt att nämna att Taylor under sin granskning av den här ändringen lyfte fram att vissa tredjepartspaket kan förlita sig på att filnamnen är i exakt samma format som SHA-1-hash. Detta är den algoritm som Laravel använde för hashning. Om du planerar en uppgradering till Laravel 10 så är det därför klokt att dubbelkolla detta i alla paket från tredje part som du använder i din app.

10. whereExists() Metodstöd för Eloquent Builder

För närvarande så kräver användningen av whereExists() att man konfigurerar den inbäddade frågan med hjälp av en closure. Lyckligtvis så möjliggör Laravel 10 att man inkluderar en Eloquent Builder som en nästlad fråga. Det gör det möjligt att använda anpassade byggmetoder, modellomfång och så vidare.

Vi gör exempelvis normalt detta om vi vill använda whereExists():

Order::whereExists(function ($query) {
  $query->from('products')->whereColumn('products.order_id', 'orders.id');
});

Med Laravel 10 kan vi göra så här istället:

Order::whereExists(
  Product::whereColumn('products.order_id', 'orders.id')
);

11. Optimering av ivrig laddning

En av de intressanta nya funktionerna i Laravel 10 är optimering av ivrig laddning när det inte finns några nycklar som ska laddas. Den här ändringen är mer av en fix än en funktion eftersom den tar itu med ett aktuellt problem där ivrig laddnings-relationer leder till att ett stort antal omöjliga begäranden exekveras.

För närvarande så kommer Laravel fortfarande att utföra en fråga som liknar den här när man laddar relationer som inte har några nycklar att ladda, när man laddar ivrigt:

select * from `table_name` where 0 = 1

Den nya uppdateringen av Laravel 10 kontrollerar dock om det finns några nycklar tillgängliga från början. Om det inte finns några sådana, skapar den en tom samling, vilket eliminerar behovet av onödiga databasbegäranden.

12. $path Valfritt för filsystemsmetoder

I Laravel 10 så är parametern $path valfri för nedanstående metoder:

  • FilesystemAdapter#putFile
  • FilesystemAdapter#putFileAs
  • UploadedFile#store
  • UploadedFile#storeAs
  • UploadedFile#storePublicly
  • UploadedFile#storePubliclyAs

I stället för att göra detta för att lagra en uppladdad fil på Amazon S3:

Storage::disk('s3')->putFile(‘post/images', $uploadedFile);

…kan vi göra så här:

Storage::disk(Disk::PostImages)->putFile($uploadedFile)

13. Databasuttryck och grammatikspecifik formatering

Bara fyra dagar före lanseringen av Laravel 10 så bestämde sig Laravel’s kärnteam för att slå ihop en lysande funktion som tar itu med en stor utmaning när man arbetar med flera databaser.

Om vi arbetade med PostgreSQL och MySQL i tidigare versioner, och ville returnera det första värdet i en lista som ett alias, var vi tvungna att skriva en rå databaskod och göra följande:

DB::table(‘visitors')
->when(isPostgreSQL(), fn ($query) => $query->select(DB::raw('coalesce(NULL, "user", "guest") AS "First Visitor"')))
->when(isMySQL(), fn ($query) => $query->select(DB::raw('coalesce(NULL, `user`, `guest`) AS `First Visitor`')))

I koden ovan använder så vi funktionenCOALESCE() för att returnera det första värdet som inte är noll som ett alias med namnet first visitor. Så varje gång som vi behöver utföra en sådan här operation måste vi skriva en rå databaskod igen.

Den nya funktionen gör det möjligt för oss att skapa återanvändbara uttrycksklasser. De implementerar de råa uttryck och uttalanden som vi behöver för våra frågor endast en gång. På så sätt slipper vi skriva rå databaskod när vi vill använda fler databasfunktioner.

Om vi går tillbaka till exemplet ovan, låt oss följa det nya tillvägagångssättet i Laravel 10 för att uppnå samma resultat men utan att använda syntaxen för rå databaskod.

Först så måste vi skapa två klasser – en för aliasing och en för att använda COALESCE()-funktionen:

class Alias implements Expression
{
  public function __construct(
    public readonly Expression|string $expression,
    public readonly string $name,
  ) { }
  public function getValue(Grammar $grammar): string
  {
    return match ($grammar->isExpression($this->expression)) {
      true => "{$grammar->getValue($this->expression)} as {$grammar->wrap($this->name)}",
      false => $grammar->wrap("{$this->name} as {$this->name}"),
    };
  }
}
class Coalesce implements Expression
{
  public function __construct(
    public readonly array $expressions,
  ) { }
  public function getValue(Grammar $grammar): string
  {
    $expressions = array_map(function ($expression) use($grammar): string {
      return match ($grammar->isExpression($expression)) {
        true => $grammar->getValue($expression),
        false => $grammar->wrap($expression),
      };
    }, $this->expressions);
    $expressions = implode(', ', $expressions);
    return "coalesce({$expressions})";
  }
}

vi kan sedan göra detta för att uppnå det önskade resultatet för både MySQL och PostgreSQL:

DB::table('visitors') ->select(new Alias(new Coalesce([NULL, 'user', 'guest']), 'First Visitor'));

Du kan tycka att det är för mycket arbete att skriva. Det är dock definitivt värt det eftersom du endast behöver skriva det en gång. Du slipper även ändra syntaxen när du har att göra med flera databaser.

Enligt Tobias Petry, skaparen av pull request, så kommer den här ändringen även att öppna dörren för många möjligheter för paket som kan tillhandahålla de vanligaste klasserna för råa uttryck. Han har till och med sagt att han kommer att tillhandahålla den för Laravel’s community i ett dedikerat paket efter Laravel 10’s lansering.

14. Uppdatering av SQL Server för att använda FETCH och OFFSET för frågor som inte innehåller en

orderBy

När vi använder orderBy i en fråga som den här:

$builder->select('*')->from('users')->skip(11)->take(10)->orderBy('email', 'desc');

Då producerar Laravel sedan ett SQL-meddelande som använder FETCH och OFFSET:

select * from [users] order by [email] desc offset 11 rows fetch next 10 rows only

Om vi i tidigare versioner av Laravel inte längre tar med orderBy i frågan så återgår den dock till den gamla metoden för att förskjuta resultaten:

$builder->select('*')->from('users')->skip(11)->take(10);
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

Men nu i Laravel 10 så kommer den här nya uppdateringen att göra det möjligt för din Laravel 10-applikation att använda FETCH och OFFSET även om orderBy inte finns med:

select * from [users] order by (SELECT 0) offset 10 rows fetch next 10 rows only

Den här uppdateringen förbättrar hastigheten med 33 % och kräver färre exekveringssteg.

15. Stöd för PHPUnit 10

Laravel 10 har stöd för PHPUnit 10. Det är ett ramverk för enhetstestning för PHP och version 10 släpptes den 3 februari år 2023. Laravel 10 kommer fortfarande att ha stöd för PHPUnit 9 och 8.

16. Säkerhetsförbättringar för klassen Timebox

Laravel 10 innehåller säkerhetsförbättringar för klassen Timebox. De syftar till att skydda applikationen mot tidlösa tidsattacker. Klassen Timebox implementeras inuti metoden hasValidCredentials.

Klassen Timebox har nu stöd för att hantera undantag som kastas under en Timebox callback-exekvering.

17. dispatch() Metodbeteendet är detsamma i hela Laravel 10

Metoden dispatch() inuti DispatchesJobs-egenskapen kontrollerar nu unika jobb på samma sätt som den globala hjälpfunktionen dispatch(). Som ett resultat så antar dispatch()-metoderna samma funktioner i hela Laravel 10.

18. Laravel-flaggor

Om du någonsin har arbetat med en webbapplikation som ständigt uppdateras med nya funktioner så förstår du hur viktiga funktionsflaggor är. Att bevara funktionsflaggor skulle dock kräva en betydande mängd arbete för att göra det rätt. Du behöver dock inte oroa dig, Laravel kan hjälpa dig med det nya förstapartspaketet Laravel Pennant.

Laravel Pennant erbjuder en lättanvänd lösning för att upprätthålla funktionsflaggor. Det levereras till och med med en drivrutin för en array i minnet och en databas.

Du kan enkelt definiera en ny funktion:

use LaravelPennantFeature;
use IlluminateSupportLottery;
Feature::define('new-color-button', function () {
return Lottery::odds(1, 10);
});

Du kan sedan kontrollera om användaren har tillgång till denna funktion eller inte:

use LaravelPennantFeature;
if (Feature::active('new-color-button')) {
  // ...
}

Det ser till och med snyggare ut i Laravel Blade:

@feature('new-color-button')
// Kinsta Rules!!
@endfeature

19. Laravel Process Interaction

De nya processinteraktionerna i Laravel 10 gör det enkelt att testa och köra CLI-processer. De erbjuder ett enkelt API som underlättar testningen. Låt oss hämta exemplet från den ursprungliga PR för funktionen av Taylor:

use IlluminateSupportFacadesProcess;
$result = Process::run('ls -la');
$result->successful();
$result->failed();
$result->exitCode();
$result->output();
$result->errorOutput();
$result->throw();
$result->throwIf(condition);

Du har förmodligen lagt märke till hur enkel och ren koden ovan är. När vi går vidare till att bygga processer så blir det bara bättre:

$result = Process::timeout(60)->path(base_path())->env([...])->run('ls -la');
$result = Process::forever()->run('ls -la');

För att använda den nya funktionen i testning så kan du skapa en ny och falsk process som denna:

Process::fake([
  'ls *' => Process::result('Hello From Kinsta'),
]);

Du kan sedan köra den falska processen och använda de nyligen tillgängliga påståendena:

$result = Process::run('ls -la');
Process::assertRan(function ($process, $result) {
  return $process->command == 'ls -la';
});
Process::assertRanTimes(function ($process, $result) {
  return $process->command == 'ls -la';
}, times: 1);
Process::assertNotRan(function ($process, $result) {
  return $process->command == 'cat foo';
});

20. Pest Test Scaffolding

Pest test scaffolding är nu aktiverat som standard när du skapar nya Laravel-projekt. För att aktivera den här funktionen så använder du flaggan --pest när du bygger en ny app med Laravel-installationsprogrammet:

laravel new example-kinsta-app --pest

21. Hjälpfunktion för stränglösenord

Laravel 10 kan skapa ett slumpmässigt och säkert lösenord med en given längd:

$password = Str::password(12);

Föråldrade metoder och paket i Laravel 10

Därefter så ska vi titta på de paket och metoder som uteslöts i samband med lanseringen av Laravel 10.

Laravel 10 tar farväl av PHP 8.0

Laravelramverket slopar stödet för PHP 8.0 i Laravel 10. Om du planerar att uppgradera din app till Laravel 10 så måste du därför först uppdatera PHP-versionen till PHP 8.1 eller PHP 8.2.

Borttagning av föråldrade metoder

Laravel-dokumentationen uppdateras med alla ändringar och viktiga avskrivningar. Om du ska migrera ett pågående projekt till Laravel 10 så ska all kod som använder en föråldrad metod skrivas om i en ny metod för att uppnå samma resultat.

Här är en lista över några av avskrivningarna:

  • Metoden Route::home (föråldrad i Laravel 9)
  • Funktioner och metoder runt dispatchNow, föråldrade för att uppmuntra utvecklare att använda dispatchSync, den enda stödda metoden för omedelbar avsändning
  • Metoden getBaseQuery, som har en motsvarighet till toBase
  • Klassen MaintenanceModeException
  • Egenskapen MocksApplicationServices
  • Mail::failures-metoden
  • Egenskapen $dates (använd $casts istället)
  • Metoden assertTimesSent()
  • Stöd för Predis 1 och DBAL 2
  • Alla relaterade avskrivningar i doctrine/dbal sedan Laravel slutade att stödja version 2

Så här installerar du Laravel 10

Laravel’s kärnteam såg till att alla utvecklare kunde få en enkel tillgång till ramverket i olika miljöer. Det finns därför olika sätt att komma igång med Laravel 10 på din maskin, och du är helt fri att välja det som fungerar bäst för dig.

Installera Laravel 10 på MacOS

Du kan enkelt komma igång med Laravel 10 på MacOS genom att använda Docker och Laravel Sail. Kör bara följande terminalkommando från den katalog där du vill att applikationen ska installeras, och tänk på att endast alfanumeriska tecken, bindestreck och understrykningar är tillåtna i appnamnet:

curl -s "https://laravel.build/example-kinsta-app" | bash

När installationsprocessen är klar så går du till projektkatalogen och använder Sail för att köra ditt nya projekt genom att trycka på följande kommando i terminalen:

./vendor/bin/sail up

Sail kommer att använda sin inbyggda lösning för att köra ditt Laravel-projekt med Docker. När det är klart så kommer din applikation att vara klar på http://localhost.

Installera Laravel 10 på Windows 10 och 11

Docker Desktop kan användas för att snabbt installera Laravel 10 på Windows. Oavsett om du använder Windows 10 eller 11 så måste du dock först aktivera ett av följande två alternativ på din dator:

Så snart som du har uppfyllt alla Docker-krav så kan du köra följande kommando i din terminal:

curl -s https://laravel.build/example-kinsta-app | bash

Använd sedan Sail för att köra din applikation på http://localhost genom att trycka på följande kommando från rotkatalogen för ditt nyinstallerade Laravel 10-projekt:

./vendor/bin/sail up

Många utvecklare föredrar Linux OS framför andra operativsystem eftersom det gör det möjligt för dem att arbeta effektivare och snabbare. Med WSL så kan du njuta av Ubuntu’s säkerhet, prestanda och spelkompatibilitet. Ubuntu är en Linuxdistribuering eller version av Linux som är välkänd för sin användarvänlighet och användarvänlighet.

Det uppmuntras att du använder Visual Studio Code och installerar Microsoft’s officiella WSL-tillägg. Då kan du öppna alla mappar i Windows Undersystem för Linux och dra nytta av hela vscode-funktionen. Dessutom så är tillägget Fjärrutveckling ett annat alternativ som refereras till i Laravel-dokumentationen.

Installera Laravel 10 med Composer

Oavsett om du använder macOS eller Windows så kan Composer få igång Laravel 10 på nolltid.

Du måste först se till att du har PHP ≤ 8.1, node, npm och Composer installerade på din dator.

När du har gjort detta så kan du installera Laravel’s installerare globalt och använda den för att installera din nya Laravel 10-applikation:

composer global require laravel/installer
laravel new example-kinsta-app

Du kan även skapa en ny Laravel 10-app direkt med hjälp av Composer:

composer create-project laravel/laravel example-kinsta-app

Så här installerar du Laravel 11

Det är fortfarande ett år kvar till lanseringen av Laravel 11. Laravel 11 är dock för närvarande tillgängligt för dig som vill testa dess funktioner. Den är inte bara tillgängligt, utan inkluderar även några sammanförda PR: s på GitHub, exempelvis att man släpper stödet för PHP 8.1.

Flaggan --dev i Laravel’s installerare installerar mastergrenen från laravel/laravel-arkivet. Nu när Laravel 10 är ute så kommer Laravel 11 att vara tillgängligt på mastergrenen. Om du använder Laravel’s installerare så behöver du bara köra det här kommandot i din terminal:

laravel new example-kinsta-app --dev

Eller om du föredrar att använda Composer:

composer create-project --prefer-dist laravel/laravel example-kinsta-app dev-master

För att bättre förstå Composer-kommandot så får du här en snabb förklaring:

  • laravel/laravel: Paketet för Laravel-installationen
  • example-kinsta-app: Den nya katalogen för ditt nya projekt (kan ändras)
  • dev-master: Nästa version av Laravel (i det här fallet Laravel 11)

När du har installerat Laravel 11 så kan du bekräfta versionen genom att navigera till den nya katalogen example-kinsta-app och köra det här Artisan-kommandot:

$ php artisan --version
Laravel Framework 11.x-dev

Så här uppgraderar du ett projekt till Laravel 10

Är du frestad att uppgradera till Laravel 10? Laravel’s kärnteam arbetar hårt med dokumentationen för att tillhandahålla en sömlös och enkel uppgraderingsguide samtidigt som alla möjliga brytande ändringar täcks. Du kan gärna kolla in den officiella uppgraderingsguiden för Laravel 10.

Du bör även hålla ett öga på Laravel Shift nu när Laravel 10 har släppts. Laravel Shift erbjuder ett enkelt och automatiserat tillvägagångssätt för att uppgradera din Laravel-version.

Så här distribuerar du Laravel 10-projekt

Att distribuera Laravel 10 skiljer sig inte från att distribuera Laravel 9-projekt.

Här är serverkraven:

  • PHP ≤ 8.1
  • Ctype PHP-tillägg
  • cURL PHP-tillägg
  • DOM PHP-tillägg
  • PHP-tillägg Fileinfo
  • PHP-tillägg Mbstring
  • OpenSSL PHP-tillägg
  • PCRE PHP-tillägg
  • PDO PHP-tillägg
  • Tokenizer PHP-tillägg
  • XML PHP-tillägg
  • Filter PHP-tillägg
  • Hash PHP-tillägg
  • Session PHP-tillägg

Du kan distribuera och hosta ditt Laravel 10-projekt på Kinsta på några minuter eftersom Laravel är ett av de många ramverk som stöds för hostade appar som finns på en lång lista.

Distribuera Laravel 10 på Kinsta: Steg för steg-guide

Det finns flera fördelar med att hosta och distribuera dina Laravel applikationer på Kinsta, bland annat att du inte behöver bry dig om konfigurationen av distribueringen.

Kinsta tillhandahåller ett användarvänligt men ändå kraftfullt verktyg för att distribuera applikationer, ansluta till databaser och övervaka liveprestanda. Det här verktyget kallas MyKinsta, och i det här avsnittet går vi igenom stegen för att distribuera en Laravel 10-applikation med hjälp av detta.

1. Förbered din applikation

Hemsidan för en Laravel 10-applikation som distribueras på Kinsta.
Hemsidan för en Laravel 10-applikation som distribueras på Kinsta.

Om vi antar att du har en Laravel 10-applikation lokalt så måste vi se till att den har ett GitHub-arkiv tillgängligt. Vi kommer senare att använda detta arkiv för att distribuera applikationen.

Du kan inkludera en .htaccess-fil i rotkatalogen för din applikation som innehåller följande:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Detta omdirigerar alla Laravel´s begäranden till public/index.php. Vid behov så kan du dock uppdatera kommandot när du lägger till applikationen (steget Konfigurera dina processer) eller efter distribueringen på sidan Processer för applikationen. Du kan använda:

  • heroku-php-apache2 /public
  • php artisan serve --host 0.0.0.0 --port 8080

2. Logga in på MyKinsta

Inloggningssidan för MyKinsta.
Inloggningssidan för MyKinsta.

Gå till inloggningssidan för MyKinsta och ange din e-postadress och ditt lösenord. Om du ännu inte har ett konto så kan du registrera ett nytt konto och få 20 dollar i rabatt på din första månad i en prenumeration på en prissättningsplan.

3. Auktorisera Kinsta på GitHub

När du har loggat in så kommer du att märka att instrumentpanelen har alternativ för att skapa en WordPress-webbplats, skapa en applikation eller skapa en databas. Vi kommer att trycka på knappen Anslut GitHub för att integrera med GitHub.

Instrumentpanelen för MyKinsta.
Instrumentpanelen för MyKinsta.

Därefter så klickar du på knappen Fortsätt med GitHub. Om du inte redan är inloggad på GitHub så visas alternativet att logga in. Därefter så kan du auktorisera Kinsta GitHub-applikationen att få tillgång till ditt GitHub-konto genom att välja Auktorisera Kinsta.

Slutligen så kommer GitHub att omdirigera din webbläsare till MyKinsta för att du ska kunna fortsätta att konfigurera applikationen.

Anslutning av MyKinsta till GitHub.
Anslutning av MyKinsta till GitHub.

När du är ansluten till GitHub så visas popup-fönstret Lägg till applikation/modalfunktionen, som har en rullgardinsmeny där du kan välja ett GitHub-arkiv. Klicka på fältet GitHub-arkiv och välj Redigera GitHub-behörighet i rullgardinsmenyn.

Lägga till en applikation till MyKinsta.
Lägga till en applikation till MyKinsta.

Detta kommer att öppna en ny flik i din webbläsare till GitHub-webbplatsen, där du kan välja vilka data som Kinsta kommer att få tillgång till. Istället för att aktivera åtkomst till alla arkiv så kan du överväga att endast välja det eller de arkiv som du vill att Kinsta ska använda.

Klicka på Endast valda arkiv och välj det arkiv som du vill distribuera.

Ge Kinsta tillgång till GitHub.
Ge Kinsta tillgång till GitHub.

Klicka sedan på Installera, så är du redo!

När du återvänder till MyKinsta och klickar på fältet GitHub-arkiv så bör det auktoriserade arkivet vara synligt. Du kan dessutom kryssa i kryssrutan Automatisk distribuering vid överlämnande. Som ett resultat så kan MyKinsta distribuera din applikation automatiskt så snart som du gör ändringar i GitHub-arkivet.

Välj en arkivgren för MyKinsta.
Välj en arkivgren för MyKinsta.

4. Lägg till grundläggande uppgifter om applikationen

Du kan nu ge applikationen ett namn som endast kommer att användas i instrumentpanelen och välja mellan 25 datacenterplatser. Som ett resultat så kan du placera applikationen på den geografiska plats som ligger närmast dina användare. Om du behöver hjälp med att avgöra vilket datacenter som är idealiskt för din applikation så kan du läsa vår guide om att välja rätt datacenterplats.

Lägg till en applikations grundläggande detaljer.
Lägg till en applikations grundläggande detaljer.

5. Lägg till miljövariabler

Följande avsnitt handlar om att lägga till miljövariabler och den viktigaste variabeln är APP_KEY.

Om du inte redan har en nyckel i din .env-fil så kan du generera en med hjälp av en Laravel-nyckelgenerator på nätet. Lägg sedan in APP_KEY i fältet Nyckel 1 och lägg in den genererade appnyckeln i fältet Värde 1.

Slutligen så väljer du Tillgänglig under körtid och Tillgänglig under byggprocessen.

Lägg till miljövariabler i MyKinsta.
Lägg till miljövariabler i MyKinsta.

6. Konfigurera byggmiljön

Det magiska här är att du inte behöver konfigurera någonting! Du kan fortsätta genom att klicka på knappen Fortsätt, och voilà: Du har slutfört konfigurationen av den byggda miljön. Om du vill förbättra byggresurserna för att säkerställa snabbare byggning så kan du dock välja det som du föredrar i fältet Byggresurser.

Fältet Byggsökväg är valfritt. Du kan lämna detta tomt så kommer MyKinsta att använda rotmappen.

Konfigurera applikationens byggmiljö.
Konfigurera applikationens byggmiljö.

7. Konfigurera processer och betalningsmetod

För avsnittet Resurser så fyller du i varje fält med följande information:

  • Processnamn: Det namn som visas i listan över applikationens processer.
  • Processtyp: Välj noga, eftersom detta inte kan ändras när det väl är inställt. Du kan dock lägga till och ändra ytterligare processer, exempelvis ett bakgrundsjobb, på sidan Processer i applikationen efter distribueringen.
  • Startkommando: Startkommandot för din process (inte obligatoriskt).
  • Podstorlek: Den podkapacitet som du räknar med att behöva för din process.
  • Antal instanser: Antal instanser för din process (max 50).

Observera att du helt enkelt kan klicka på Fortsätt utan att fylla i fältet Startkommando, eftersom Kinsta upptäcker det nödvändiga kommandot automatiskt under den första distribueringen.

Inställning av applikationens processer.
Inställning av applikationens processer.

I det sista steget så granskar du de månatliga användningskostnaderna som har beräknats för din app och bekräftar sedan din betalningsmetod. När du är klar så klickar du på knappen Bekräfta betalningsmetod.

Bekräfta betalningsuppgifter.
Bekräfta betalningsuppgifter.

Sen är du klar! Kinsta gör allt arbete i bakgrunden för att betjäna din applikation.

Laddar applikationens distribueringsprocess.
Laddar applikationens distribueringsprocess.

Därefter så får du tillgång till alla detaljer om distribueringsprocessen samt den tillfälliga webbadressen för liveappen, som du senare kan ersätta med din egen domän.

Framgångsrik distribuering av Laravel 10-applikationen på MyKinsta.
Framgångsrik distribuering av Laravel 10-applikationen på MyKinsta.

Din Laravel 10-applikation är nu live på Kinsta, men vad händer om du behöver göra en ändring i produktionen? Eller om du vill ändra en ankartaggs attribut href?

Eftersom vi har aktiverat alternativet Automatisk distribuering vid utförande så kommer MyKinsta att upptäcka alla ändringar som vi gör i den distribuerade grenen och automatiskt uppdatera live-appen i enlighet med detta.

8. Anslut Laravel 10 till MySQL-databasen

Nu när vi har distribuerat vår Laravel 10-applikation så kan vi enkelt konstruera en databas och koppla den till vår applikation. Allt som du behöver göra är att klicka på Applikationer i navigeringsmenyn till vänster, sedan på Lägg till tjänst och Databas.

Lägg till en ny databas i MyKinsta.
Lägg till en ny databas i MyKinsta.

När du har fyllt i alla fält så klickar du på Skapa databas. Detta kommer att skapa en ny databas som är redo för interna och externa anslutningar. I vårt scenario så behöver vi en intern anslutning till Laravel 10-projektet som vi distribuerade.

För att åstadkomma detta så är allt som du behöver göra att klicka på Lägg till applikation i avsnittet Interna anslutningar och välja din applikation. Du kan kryssa i kryssrutan Lägg till miljövariabler till applikationen så fyller MyKinsta i alla .env-variabler som din applikation behöver.

Anslutning av en databas till en Laravel 10-applikation.
Anslutning av en databas till en Laravel 10-applikation.

Sen är din Laravel 10-applikation distribuerad och ansluten till en databas.

Hur man bidrar till Laravel 10

Även om Laravel underhålls av ett kärnteam så utvecklas det aktivt av över 3 000 frivilliga bidragsgivare.

Vill du vara en av dessa bidragsgivare och hjälpa till att forma Laravels framtid? Om du svarar ja så kan du hjälpa utvecklare över hela världen genom att lägga till en ny funktion, åtgärda ett fel eller till och med skriva om en förvirrande del av dokumentationen.

För att bidra till Laravel 10, så behöver du göra detta:

  1. Gå till Laravel’s GitHub-arkiv och kolla in pull requests med [10.x] i titeln. På så sätt får du en tydlig bild av alla pull requests för Laravel 10. Om en av PR: erna tar upp det bidrag som du tänkte göra, se om du kan förbättra det.
  2. Om ditt planerade bidrag ännu inte har behandlats av någon annan så kan du skapa ett PR själv.
  3. Allt är inte värt att lägga till i ramverkets kodbas. Sträva därför efter att endast genomföra förbättringar som kommer att vara lätta att underhålla i framtiden och som kommer att hjälpa den stora majoriteten av Laravel’s community.
  4. Se till att följa Laravel’s riktlinjer för bidrag för att få en bättre chans att få dina ändringar sammanslagna med ramverket.

En annan anledning till att älska Laravel 10 är att du kan vinna pengar för dina bidrag med bugg-jakt! Vi kommer att titta på dessa härnäst.

Laravel 10-tävling om bugg-jakt

Laravel 10 har tillkännagivit en utmärkt tävling där en slumpmässig bidragsgivare har chansen att vinna 1 000 dollar. Detta var den första tävlingen i sitt slag i Laravel’s historia. Den var utformad för att uppmuntra Laravel’s community att hitta och åtgärda dolda buggar i Laravel 10.

Reglerna var enkla:

  • Endast PRs som skickas in till laravel/framework-arkivets 10.x branch är kvalificerade.
  • Endast ”äkta” buggfixar beaktades. Nya funktioner, refaktorisering och rättelser av felskrivningar beaktades inte.
  • Varje felrättning måste stödjas av ett test.
  • Godkända felrättningar märktes på GitHub och en slumpmässig vinnare tillkännagavs efter tävlingens slut.

Tävlingen avslutades när den första stabila versionen av Laravel 10 släpptes den 14 februari år 2023.

Sammanfattning

Hittills så verkar Laravel 10 vara extremt lovande, och vi ser fram emot att gå igenom alla de gåvor som det för med sig till PHP-världen.

Om du letar efter fler sätt att förbättra prestandan hos din Laravel-app så kan du överväga att byta till en premium hosting-leverantör. Kinsta’s lösningar för applikationshosting är bland de snabbaste, säkraste och lättaste att använda i branschen. De är särskilt utformade med utvecklare i åtanke, och erbjuder effektivisering av produktionen och expertsupport dygnet runt från våra egna erfarna utvecklare.

Mostafa Said

Jag är Mostafa, en fullstack-utvecklare med en talang för allt som rör Laravel, Inertia och JavaScript-ramverk. När jag inte kodar delar jag med mig av min kunskap genom tutorials, dyker in i hackathons (och vinner några) och sprider kärleken till teknik genom att lära ut det som jag har lärt mig.