Depois de mais de uma década desde a introdução da popular framework Laravel, você já se perguntou: “O que mais Laravel pode oferecer aos desenvolvedores de PHP?

Dado o quanto ele simplificou o desenvolvimento de PHP tanto para iniciantes quanto para profissionais, alguns podem até argumentar que ele está induzindo os desenvolvedores a acreditar que PHP é a linguagem de programação mais fácil.

Então, Laravel ainda tem mais surpresas reservadas para os desenvolvedores Laravel? Ou já esgotou todos os meios possíveis para dar suporte aos desenvolvedores de PHP?

Nessa versão, podemos esperar que o Laravel 10 tenha muitas novidades interessantes a oferecer. É o que descobriremos neste artigo, enquanto fazemos uma viagem pelas novas funcionalidades, correções, métodos e pacotes recentemente depreciados do Laravel 10.

Agenda de lançamento do Laravel 10

A equipe central do Laravel costumava lançar duas versões principais anualmente (uma a cada seis meses).

No entanto, o ciclo de lançamento mudou quando o criador do Laravel, Taylor Otwell, anunciou que lançaria um grande lançamento a cada ano. Isso permite que a equipe principal e a comunidade dediquem mais tempo e esforço a versões específicas da framework, introduzindo novos recursos poderosos sem interromper as alterações.

O Laravel 10 estava programado para ser lançado em 7 de fevereiro de 2023, após o lançamento do Laravel 9 em 8 de fevereiro de 2022. No entanto, a equipe precisou de mais tempo para finalizar a obra de arte, e o Laravel 10 foi finalmente publicado em 14 de fevereiro de 2023.

O Laravel 11 deverá ser lançado no primeiro trimestre de fevereiro de 2024.

Além disso, de acordo com a política de suporte, correções de bugs são oferecidas por 18 meses e atualizações de segurança por dois anos para todas as versões do Laravel.

A seguir estão as correções de bugs esperadas e o cronograma de atualizações de segurança:

  • Laravel 9 continuará a receber correções de bugs até 8 de agosto de 2023 e correções de segurança até 6 de fevereiro de 2024.
  • Laravel 10 receberá correções de bugs até 6 de agosto de 2024 e correções de segurança até 4 de fevereiro de 2025.
  • O Laravel 11 deverá receber correções de bugs até 5 de agosto de 2025 e correções de segurança até 3 de fevereiro de 2026.

Você deveria atualizar para o Laravel 10?

É importante lembrar que nem sempre precisamos atualizar a versão do nosso aplicativo Laravel para a versão mais recente assim que uma nova versão for lançada.

Laravel é uma framework de código aberto, o que significa que quando instalamos uma nova instância do Laravel em nossa máquina, possuímos o código base da framework. Isso significa que, mesmo que a versão do framework que nosso aplicativo esteja usando não seja mais suportada, o aplicativo ainda funcionará, mas precisaremos mantê-lo atualizado por conta própria.

Por esse motivo, é amplamente sugerido que a estabilidade do aplicativo seja priorizada em relação às atualizações da framework.

Resumindo, você deve considerar a atualização para o Laravel 10 quando:

  • O aplicativo está estável em sua versão atual e funciona sem problemas.
  • A nova versão adiciona um recurso que seu aplicativo requer ou corrige um problema que seu aplicativo está enfrentando.
  • O aplicativo será bem testado antes de implementar as mudanças de atualização na produção.

As 10 atualizações do Laravel

Laravel 10.
Laravel 10.

Kinsta é um grande fã do Laravel. É por isso que reunimos os destaques do Laravel 8 em um único artigo para que você possa usá-lo como referência e guia para aproveitar todas as novas funcionalidades. Portanto, recomendamos que salve esta página e a revisite de tempos em tempos.

Novos recursos e atualizações no Laravel 10

Não há dúvida de que a parte mais emocionante de qualquer novo lançamento é a adição de novos recursos. Então, sem mais delongas, vamos começar dando uma olhada nas novas funcionalidades e atualizações no Laravel 10.

1. PHP 8.1: O coração do Laravel 10

O PHP 8.1 é a versão mínima do PHP necessária para o Laravel 10. Alguns recursos do PHP 8.1, como B. Laravel 10, usam propriedades readonly e array_is_list.

2. Suporte para PHP 8.2

O PHP 8.2 foi lançado em 8 de dezembro de 2022, apenas dois meses antes da data de lançamento do Laravel 10. Ainda assim, isso não deve impedi-lo de utilizar as funcionalidades do PHP 8.2, pois sem fazer nada extra, o Laravel 10 está pronto para o PHP 8.2.

Na verdade, todo o ecossistema Laravel, incluindo Forge, Vapor, e Envoyer, suporta PHP 8.2, e você pode até mesmo usar PHP 8.2 com Laravel 9. Quão legal é isso?

3. Atualização dos pacotes oficiais do Laravel

Não apenas a framework é mantida e atualizada regularmente, mas também todos os pacotes oficiais e o ecossistema.

Abaixo listamos os pacotes oficiais mais recentes do Laravel que foram atualizados para suportar o 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

Outro presente para os fãs de Rails, Vue, React e Svelte, Inertiajs 1.0.1 também suporta Laravel 10.

4. Atualização da versão Predis

O Predis é um cliente Redis robusto para PHP que pode ajudar você a maximizar o cache e proporcionar uma experiência fantástica ao usuário. Anteriormente, o Laravel suportava as versões 1 e 2 do Predis, mas a partir do Laravel 6, o framework não oferece mais suporte à versão 1 do Predis.

Embora a documentação do Laravel mencione Predis como o pacote para interagir com Redis, você também pode usar a extensão oficial do PHP. Esta extensão fornece uma API para a comunicação com os servidores Redis.

5. Declarações tipo nativo

Laravel costumava utilizar DocBlocks em seu esqueleto do código para esclarecer o que uma parte de código faz e que tipos de parâmetros ou respostas esperar. No entanto, graças às declarações de tipo nativo no Laravel 10, isso mudará.

A melhor maneira de explicar esta mudança é com um exemplo simples.

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

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

…ficará assim:

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

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

Essa alteração é apenas para experiência do desenvolvedor, pois o IDE conhece o formato dos parâmetros e a resposta esperada. Fornece tipos mais claros onde os tipos PHP nativos não são possíveis. Portanto, ajuda os editores de código a usar o recurso de preenchimento automático para melhorar o desempenho.

6. Todas as regras de validação são invocáveis por padrão

Se você deseja que suas regras de validação sejam invocáveis ​​no Laravel 9, você precisa adicionar uma flag --invokable após o comando do Artisan. Todas as regras do Laravel 10 podem ser invocáveis por padrão, então isso não é mais necessário. Então você pode criar uma nova regra de invocação no Laravel 10 executando o seguinte comando:

php artisan make:rule CustomRule

7. Suporte nativo para modificação de coluna

Para eliminar a necessidade do pacote DBAL (doctrine/dbal) ao usar o método change() para modificar colunas, o Laravel 10 introduziu uma nova funcionalidade que permite aos desenvolvedores modificarem colunas com MySQL, PostgreSQL, e SQL Server sem a necessidade de pacotes extras. Embora essa seja uma mudança significativa e arriscada, acreditamos que ela valha a pena, já que elimina a dependência de um pacote adicional.

Para entender melhor o novo recurso, veja o exemplo abaixo:

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

Agora, estamos assumindo que temos uma coluna para user_balance e queremos mudar seu tipo. A partir do Laravel 10, podemos simplesmente fazer isso:

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

O código acima mudará com sucesso o tipo da coluna, mas também deixará de lado os atributos UNSIGNED, DEFAULT, e COMMENT. Portanto, é importante lembrar de adicionar todos os atributos quando você estiver mudando o tipo de uma coluna:

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

No caso de você ter múltiplas conexões de banco de dados e já ter instalado o DBAL, é recomendado chamar o método Schema::useNativeSchemaOperationsIfPossible() dentro do método de inicialização em AppProvidersAppServiceProvider para poder usar operações de esquema nativo e usar operações nativas antes de confiar no pacote (SQLite, por exemplo, ainda não suporta isso):

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

8. Recuperação nativa do tipo de coluna

Outra funcionalidade notável do Laravel 10 é a capacidade de usar o método Schema::getColumnType sem ter que confiar no pacote doctrine/dbal. Atualmente usamos Schema::getColumnType com DBAL para obter o tipo de coluna. DBAL mapeia cada tipo de coluna nativa para seu equivalente de tipo DBAL, e não suporta muitos dos tipos de coluna usados por Laravel em vários bancos de dados.

No Laravel 10, por outro lado, o novo método Schema::getColumnType retornará o tipo de coluna real ao invés de seu equivalente DBAL. Ele também permite que você escreva testes de integração para o novo recurso de modificação de coluna nativa. Você pode usar este recurso para obter o nome do tipo de dados ou a definição completa do tipo da coluna especificada:

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

9. Algoritmo de Hashing mais rápido

xxHash é um algoritmo de Hash que é incrivelmente rápido. Ele apresenta grande aleatoriedade e dispersão de saída, bem como a singularidade para reduzir colisões. Como o PHP 8.1 fornece suporte para xxh128, e o Laravel 10 roda no PHP 8.1, ter um algoritmo de hash tão confiável dentro do Laravel 10 é ideal.

Vale a pena mencionar que Taylor destacou durante sua revisão desta mudança que alguns pacotes de terceiros podem confiar que os nomes dos arquivos estejam no formato exato, como o hash SHA-1, que é o algoritmo que Laravel costumava usar para hashing. Portanto, se você está planejando uma atualização para o Laravel 10, seria sábio checar novamente isso em qualquer pacote de terceiros que você esteja usando em seu aplicativo.

10. Suporte para o métodowhereExists() na classe Eloquent Builder

Atualmente, o uso do whereExists() requer a configuração da consulta aninhada usando um fechamento. Felizmente, com o Laravel 10, agora é possível incluir um Eloquent Builder como uma consulta aninhada. Ele permite o uso de métodos de construção personalizados, escopos de modelos, e assim por diante.

Por exemplo, normalmente fazemos isso se quisermos usar whereExists():

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

Com o Laravel 10, podemos simplesmente fazer isso:

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

11. Otimização de carregamento ansioso (Eager Loading)

Uma das novas funcionalidades interessantes do Laravel 10 é a otimização do carregamento ansioso quando não há chaves para serem carregadas. Essa mudança é mais uma correção do que uma nova funcionalidade, uma vez que resolve um problema existente no qual as relações de carregamento ávido podem resultar em um grande número de consultas inviáveis.

Atualmente, quando as relações de carregamento ansioso não possuem chaves para serem carregadas, o Laravel ainda executa uma consulta semelhante a esta:

select * from `table_name` where 0 = 1

Entretanto, a nova atualização do Laravel 10 verifica se há alguma chave disponível em primeiro lugar e, se não houver nenhuma, fornece uma coleção vazia, eliminando a necessidade de consultas desnecessárias ao banco de dados.

12. O parâmetro $pathé opcional para os métodos de sistema de arquivos

No Laravel 10, o parâmetro $path é opcional para os métodos abaixo:

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

Então, ao invés de fazer isso para armazenar um arquivo carregado no Amazon S3:

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

…podemos fazer isso:

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

13. Expressões do banco de dados e formatação específica de gramática

Apenas quatro dias antes do lançamento do Laravel 10, a equipe central do Laravel decidiu fundir uma funcionalidade brilhante que aborda um grande desafio quando se trabalha com múltiplos bancos de dados.

Nas versões anteriores do PostgreSQL e MySQL, para retornar o primeiro valor de uma lista como um alias, era necessário escrever o código bruto do banco de dados, como o exemplo a seguir:

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`')))

No código acima, estamos usando a funçãoCOALESCE()  para retornar o primeiro valor não-nulo como um pseudônimo chamado first visitor. Então, toda vez que precisaríamos realizar uma operação como esta, teríamos que escrever o código do banco de dados bruto novamente.

O novo recurso nos permite criar classes de expressão reutilizáveis que implementam as expressões e declarações que precisamos para nossas consultas apenas uma vez. Isso eliminará a necessidade de escrever código do banco de dados bruto quando quisermos usar mais funcionalidades do banco de dados.

Voltando ao exemplo acima, vamos seguir a nova abordagem do Laravel 10 para alcançar o mesmo resultado, mas sem usar a sintaxe do código bruto do banco de dados.

Primeiro, precisaríamos criar duas classes – uma para o aliasing, e outra para o uso da função COALESCE():

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})";
  }
}

Então, podemos fazer isso para alcançar o resultado desejado tanto para o MySQL quanto para o PostgreSQL:

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

Você pode achar difícil escrever, mas definitivamente vale a pena porque você só precisa escrever uma vez e evitar o incômodo de alterar a sintaxe ao lidar com vários bancos de dados.

Além disso, segundo o criador do pedido pull, Tobias Petry, esta mudança abrirá a porta para inúmeras possibilidades de pacotes que fornecerão as classes de expressão bruta mais populares. Ele também declarou que as disponibilizará para a comunidade em um pacote dedicado após o lançamento do Laravel 10.

14. Atualização do SQL Server para utilizar FETCH e OFFSET em consultas que não incluem orderBy

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

Laravel então produz a instrução SQL que usa FETCH e OFFSET:

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

Entretanto, nas versões anteriores do Laravel, se você remover o orderBy da consulta, você reverte para o método antigo de compensação de resultados:

$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

Mas agora no Laravel 10, esta nova atualização permitirá que o seu aplicativo Laravel 10 utilize FETCH e OFFSET mesmo quando orderBy não estiver presente:

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

Esta atualização melhora a velocidade em 33% e requer menos etapas de execução.

15. Suporte PHPUnit 10

Laravel 10 suporta PHPUnit 10. É uma framework para testes unitários para PHP e a versão 10 foi lançada em 3 de fevereiro de 2023. O Laravel 10 ainda terá suporte para PHPUnit 9 e 8.

16. Melhorias de segurança para a classe Timebox

Laravel 10 inclui melhorias de segurança para a classe Timebox, cujo objetivo é proteger o aplicativo contra-ataques intemporais. A classe Timebox é implementada no método hasValidCredentials.

A classe Timebox agora tem suporte para lidar com exceções lançadas durante a execução de uma callback da Timebox.

17.  O comportamento do método dispatch() é o mesmo em todas as versões do Laravel 10.

 

O método dispatch() dentro do trait DispatchesJobs agora verifica trabalhos únicos da mesma forma que a função auxiliar global dispatch(). Isso faz com que os métodos dispatch() adotem as mesmas funcionalidades em todas as versões do Laravel 10.

18. Laravel Pennant

Se você já trabalhou em um aplicativo web que está sendo constantemente atualizado com novas funcionalidades, você entende o quão vitais são as flags de recursos. No entanto, preservar as flags de funcionalidades pode exigir uma quantidade significativa de trabalho para ser feito corretamente. Mas não se preocupe, o Laravel tem a solução perfeita com o novo pacote Laravel Pennant.

Laravel Pennant fornece uma solução fácil de usar para manter as bandeiras de recursos. Ele vem até mesmo com um driver in-memory array e um banco de dados.

Você pode definir facilmente um novo recurso:

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

Então você conseguirá verificar se o usuário tem ou não acesso a este recurso:

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

Em Laravel Blade é ainda melhor:

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

19. Interação do processo Laravel

A nova interação de processo do Laravel 10 simplifica a execução de testes e os processos CLI. Fornece uma API simples para testes de carga. Vamos ver um exemplo do PR original para o recurso de Taylor:

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

Você provavelmente já notou como o código acima é simples e limpo. Passando aos processos de build, as coisas só ficam melhores:

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

Agora, para usar este novo recurso em testes, você pode criar um processo novo e falso como este:

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

Então você pode executar o processo falso e usar as novas asserções disponíveis:

$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 Scaffolding

O Pest Scaffolding agora está habilitado por padrão ao criar novos projetos do Laravel. Para habilitar este recurso, use a flag --pest ao construir um novo aplicativo com o instalador Laravel:

laravel new example-kinsta-app --pest

21. Função auxiliar de senha de string

Laravel 10 pode criar uma senha aleatória e segura com um determinado comprimento:

$password = Str::password(12);

Métodos e pacotes depreciados no Laravel 10

Em seguida, vamos dar uma olhada nos pacotes e métodos, que foram removidos com o lançamento do Laravel 10.

Laravel 10 diz adeus ao PHP 8.0

O framework Laravel não oferece mais suporte para o PHP 8.0 no Laravel 10. Portanto, se você está planejando atualizar seu aplicativo para o Laravel 10, primeiro deve atualizar a versão do PHP para o PHP 8.1 ou PHP 8.2.

Remoção de métodos depreciados

A documentação da Laravel do Laravel foi atualizada com todas as mudanças e depreciações importantes. Se você for migrar um projeto atual para o Laravel 10, qualquer código que utilize um método obsoleto deve ser reescrito em uma nova abordagem para obter o mesmo resultado.

Segue abaixo uma lista de algumas das depreciações:

  • O método Route::home (depreciado no Laravel 9)
  • Funções e métodos em torno de dispatchNow, depreciados para encorajar os desenvolvedores a usar dispatchSync o único método suportado para envio imediato
  • O método getBaseQuery, que tem um equivalente em toBase
  • A classe MaintenanceModeException
  • Trait MocksApplicationServices
  • O método Mail::failures
  • A propriedade $dates (usa $casts ao invés disso)
  • O método assertTimesSent()
  • Suporte para Predis 1 e DBAL 2
  • Todas as depreciações relacionadas ao doctrine/dbal desde que o Laravel deixou de oferecer suporte à versão 2

Como instalar o Laravel 10

A equipe central do Laravel se certificou de que todos os desenvolvedores pudessem facilmente acessar a framework em diferentes ambientes. Portanto, há várias maneiras de começar com o Laravel 10 em sua máquina, e você está totalmente livre para selecionar o que funcionar melhor para você.

Instale o Laravel 10 no MacOS

Você pode facilmente começar com Laravel 10 no MacOS usando Docker e Laravel Sail. Execute o seguinte comando do terminal do diretório onde você quer instalar o aplicativo, tendo em mente que somente caracteres alfanuméricos, hífens e sublinhados são permitidos para o nome do aplicativo:

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

Após o processo de instalação estar completo, vá até o diretório do projeto e use Sail para iniciar o novo projeto, digitando o seguinte comando no terminal:

./vendor/bin/sail up

Sail usará sua solução integrada para iniciar o projeto Laravel usando Docker e, uma vez terminado, o aplicativo estará pronto em http://localhost.

Instale o Laravel 10 no Windows 10 e 11

O Docker Desktop pode ser usado para instalar rapidamente o Laravel 10 no Windows. Entretanto, se você estiver usando o Windows 10 ou 11, você deve primeiro habilitar uma das duas opções a seguir em sua máquina:

  • Subsistema Windows para Linux 2 (WSL2) é um recurso do sistema operacional Windows que permite que você execute um sistema de arquivos Linux e ferramentas de linha de comando Linux diretamente no Windows.
  • Hyper-V Backend Feature permite a você criar e operar uma versão de software de um computador conhecido como uma máquina virtual.

Assim que você tiver cumprido todos os requisitos do Docker, você pode executar o seguinte comando em seu terminal:

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

Então use Sail para executar o aplicativo http://localhost executando o seguinte comando do diretório raiz do seu projeto Laravel 10 recentemente instalado:

./vendor/bin/sail up

Por outro lado, muitos desenvolvedores preferem o sistema operacional Linux ao invés de outros sistemas operacionais, pois ele permite que eles trabalhem de forma mais eficiente e rápida. Com o WSL, você pode desfrutar da segurança, desempenho e compatibilidade de jogos do Ubuntu. O Ubuntu é uma distribuição Linux ou versão do Linux conhecida por sua facilidade de uso.

Recomendamos que você use o Visual Studio Code e instale a extensão oficial da Microsoft WSL para poder abrir qualquer pasta do Subsistema Windows para Linux e tirar proveito de toda a funcionalidade do vscode. Além disso, a extensão Desenvolvimento Remoto é outra opção referida na documentação do Laravel.

Instale o Laravel 10 com o Composer

Se você usa macOS ou Windows, o Composer o coloca em funcionamento com Laravel 10 em pouco tempo.

Você precisa primeiro ter certeza de ter o PHP ≤ 8.1, node, npm e Composer instalados em sua máquina.

Uma vez instalado, você pode instalar o Laravel Installer globalmente e usá-lo para instalar seu novo aplicativo Laravel 10:

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

Ou, você pode criar um novo aplicativo Laravel 10 diretamente usando apenas o Composer:

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

Como instalar o Laravel 11

Estamos ainda a um ano do lançamento do Laravel 11. No entanto, o Laravel 11 está atualmente disponível para que você teste suas funcionalidades. Não só isso, ele também inclui alguns PRs fundidos no GitHub, como a queda do suporte ao PHP 8.1.

A flag --dev no Laravel Installer instala a branch mestre a partir do repositório laravel/laravel, e agora que o Laravel 10 está disponível, o Laravel 11 estará disponível no ramo mestre. Se você estiver usando o Laravel Installer, tudo o que você precisa fazer é executar este comando no seu terminal:

laravel new example-kinsta-app --dev

Ou, se você preferir usar o Composer:

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

Para entender melhor o comando Composer, aqui vai uma explicação rápida:

  • laravel/laravel: O pacote para a instalação do Laravel
  • example-kinsta-app: O novo diretório para seu novo projeto (pode ser alterado)
  • dev-master: A próxima versão do Laravel (neste caso, Laravel 11)

Após instalar o Laravel 11, você pode confirmar a versão navegando para o novo diretório de exemplos-kinsta-app e rodando este comando Artisan:

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

Como atualizar um projeto para o Laravel 10

Você está tentado a atualizar para o Laravel 10? A equipe central do Laravel trabalha duro na documentação para fornecer um guia de atualização simples e direto enquanto cobre todas as possíveis mudanças de interrupção. Fique à vontade para verificar o guia oficial de atualização do Laravel 10.

Você também deve ficar de olho no Laravel Shift, agora que o Laravel 10 foi lançado. O Laravel Shift oferece uma abordagem simples e automatizada para atualizar sua versão do Laravel.

Como implantar os projetos no Laravel 10

A implantação do Laravel 10 não é diferente da implantação do projeto Laravel 9.

Aqui estão os requisitos do servidor:

  • PHP ≤ 8.1
  • Extensão PHP tipo C
  • Extensão PHP cURL
  • Extensão PHP DOM
  • Extensão PHP Fileinfo
  • Extensão PHP Mbstring
  • Extensão PHP OpenSSL
  • Extensão PHP PCRE
  • Extensão PHP PDO
  • Extensão PHP Tokenizer
  • Extensão PHP XML
  • Extensão PHP Filter
  • Extensão PHP Hash
  • Extensão PHP Session

Você pode implantar e hospedar seu projeto Laravel 10 na Kinsta em questão de minutos, uma vez que o Laravel é um dos muitos frameworks suportados para aplicativos hospedados.

Implantando o Laravel 10 na Kinsta: Guia passo a passo

Há vários benefícios em hospedar e implantar seus aplicativos Laravel na Kinsta, incluindo não ter que se preocupar com a configuração de implantação.

Kinsta fornece uma ferramenta amigável e poderosa para a implantação de aplicativos, conexão com bancos de dados e monitoramento do desempenho em tempo real. Esta ferramenta é conhecida como MyKinsta. Esta seção irá orientá-lo na implantação de um aplicativo Laravel 10 que o utiliza.

1. Prepare o seu aplicativo

A página inicial de um aplicativo Laravel 10 implantada na Kinsta.
A página inicial de um aplicativo Laravel 10 implantada na Kinsta.

Assumindo que você tenha um aplicativo Laravel 10 localmente, precisamos ter certeza que ela tenha um repositório GitHub disponível. Usaremos este repositório para implantar o aplicativo mais tarde.

Você pode incluir um arquivo .htaccess no diretório raiz do seu aplicativo que contém o seguinte:

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

Para Laravel, isso redireciona todos os pedidos para public/index.php. Entretanto, se necessário, você pode atualizar este comando enquanto adiciona seu aplicativo (Configure sua etapa de processos) ou após a implantação, na página de Processos do aplicativo. Você pode usar:

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

2. Faça o login no MyKinsta

A página de login do MyKinsta.
A página de login do MyKinsta.

Vá para a página de login do MyKinsta e digite seu endereço de e-mail e senha. Se você ainda não tem uma conta, você pode registrar uma nova conta e obter $20 de desconto em seu primeiro mês de assinatura de qualquer plano.

3. Autorize a Kinsta no GitHub

Uma vez conectado, você notará que o painel de controle tem opções para criar um site WordPress, criar um aplicativo ou criar um banco de dados. clique o botão Conectar GitHub para integrar com o GitHub.

O painel MyKinsta.
O painel MyKinsta.

A seguir, clique no botão Continuar com GitHub. Se você ainda não estiver logado no GitHub, você terá a opção de fazer o login. Então você pode autorizar o aplicativo Kinsta GitHub a acessar sua conta GitHub selecionando Autorizar Kinsta.

Finalmente, GitHub redirecionará seu navegador para o MyKinsta a fim de continuar configurando o aplicativo.

Conectando MyKinsta ao GitHub.
Conectando MyKinsta ao GitHub.

Depois que você estiver conectado ao GitHub, será mostrado o popup/modal Adicionar aplicativo, que tem um menu suspenso para selecionar um repositório GitHub. Clique no campo repositório GitHub e selecione Editar permissões GitHub no menu suspenso.

Adicionando um aplicativo no MyKinsta.
Adicionando um aplicativo no MyKinsta.

Isso abrirá uma nova aba em seu navegador para a página do GitHub, onde você poderá escolher quais dados Kinsta poderá acessar. Ao invés de permitir o acesso a todos os repositórios, considere escolher apenas aquele(s) que você quer que a Kinsta use.

Clique em Apenas repositórios selecionados e escolha o repositório que você gostaria de implantar.

Concedendo acesso ao GitHub.
Concedendo acesso ao GitHub.

Então clique em Instalar, e você está pronto!

Quando você retornar ao MyKinsta e clicar no campo de repositório GitHub, o repositório autorizado deve estar visível. Uma vez que ativamos a opção de implantação automática ao confirmar, o MyKinsta detectará quaisquer alterações que fizermos no branch implantado e atualizará automaticamente o aplicativo de produção de acordo.

Selecionando um branch de repositório para MyKinsta.
Selecionando um branch de repositório para MyKinsta.

4. Adicione detalhes básicos do aplicativo

Agora você pode dar ao aplicativo um nome que será usado apenas no painel de controle e selecionar entre 25 locais de centro de dados, permitindo que você coloque seu aplicativo no local geográfico mais próximo de seus usuários. Se você precisar de assistência para determinar qual centro de dados é ideal para o seu aplicativo, confira nosso guia para escolher a localização correta do centro de dados.

Adicionando os detalhes básicos de um aplicativo.
Adicionando os detalhes básicos de um aplicativo.

5. Adicione variáveis de ambiente

A seção seguinte é para adicionar variáveis de ambiente e a variável mais importante é a APP_KEY.

Se você ainda não tem uma chave em seu arquivo .env, você pode gerar uma usando um gerador de chaves Laravel on-line. Então, insira APP_KEY no campo Chave 1 e insira a chave do aplicativo gerada no campo Valor 1.

Finalmente, selecione Disponível durante o tempo de execução e Disponível durante o processo de build.

Adicionando variáveis de ambiente no MyKinsta.
Adicionando variáveis de ambiente no MyKinsta.

6. Configure o ambiente de build

A mágica aqui é que você não precisa configurar nada! Você pode prosseguir clicando no botão Continuar, e voilà: Você completou a configuração de build. Entretanto, se você quiser melhorar os recursos de build  para garantir uma construção mais rápida, você pode escolher à sua preferida no campo Recursos de build.

O campo Caminho de build é opcional. Você pode deixá-lo sem nada, e o MyKinsta usará a pasta raiz.

Configurando o ambiente de build do aplicativo.
Configurando o ambiente de build do aplicativo.

7. Configure processos e forma de pagamento

Para a seção de Recursos, preencha cada campo com as seguintes informações:

  • Nome do processo: O nome exibido na lista dos processos do seu aplicativo.
  • Tipo do processo: Escolha cuidadosamente, porque isso não pode ser alterado uma vez que esteja definido. Você pode, entretanto, adicionar e alterar processos adicionais, como um job em segundo plano, na página de Processos do seu aplicativo após a implantação.
  • Comando Start: O comando “Start” para o seu processo (não é necessário).
  • Tamanho do POD: A capacidade de pod que você espera precisar para o seu processo.
  • Contagem de instâncias: O número de instâncias para o seu processo (máx. 50).

Note que você pode simplesmente clicar em Continuar sem preencher o campo de comando Start, pois Kinsta detecta automaticamente o comando necessário durante a primeira implantação.

Configurando os processos do aplicativo.
Configurando os processos do aplicativo.

Para o último passo, revise os custos mensais de uso calculados para o seu aplicativo, e então confirme seu método de pagamento. Quando terminar, clique no botão Confirmar método de pagamento.

Confirmar detalhes de pagamento.
Confirmar detalhes de pagamento.

E você está pronto! Kinsta fará todo o trabalho em segundo plano para atender o seu aplicativo.

Carregando o processo de implantação do aplicativo.
Carregando o processo de implantação do aplicativo.

Então você terá acesso a todos os detalhes do processo de implantação, bem como a URL temporária do aplicativo em tempo real, que você pode posteriormente substituir pelo seu próprio domínio.

implantação bem-sucedida do aplicativo Laravel 10 no MyKinsta.
implantação bem-sucedida do aplicativo Laravel 10 no MyKinsta.

Seu aplicativo Laravel 10 está agora em produção na Kinsta, mas e se você precisar fazer uma alteração? Ou mudar o valor do atributo href de uma tag âncora?

Como ativamos a opção de Implantação Automática no Commit, o MyKinsta detectará qualquer alteração que fizermos no branch implantado e atualizará automaticamente o aplicativo em tempo real de acordo.

8. Conecte o Laravel 10 ao banco de dados MySQL

Agora que implantamos nosso aplicativo Laravel 10, podemos construir sem esforço um banco de dados e conectar ao nosso aplicativo. Tudo o que você tem que fazer é clicar em Aplicativos no menu de navegação à esquerda, depois Adicionar serviço e selecionar Banco de Dados.

Adicionando um novo banco de dados no MyKinsta.
Adicionando um novo banco de dados no MyKinsta.

Após preencher todos os campos, clique em Criar banco de dados. Isso irá estabelecer um novo banco de dados pronto para conexões internas e externas. Em nosso cenário, exigimos uma conexão interna para o projeto Laravel 10 que implantamos.

Para conseguir isso, tudo que você precisa fazer é clicar em Adicionar aplicativo na seção Conexões internas e selecionar o seu aplicativo. Você pode marcar a caixa de seleção Adicionar variáveis de ambiente ao seu aplicativo e o MyKinsta irá preencher todas as variáveis .env que o seu aplicativo precisar.

Conectando um banco de dados para um aplicativo Laravel 10.
Conectando um banco de dados para um aplicativo Laravel 10.

Com isso, seu aplicativo Laravel 10 está implantada e conectada a um banco de dados.

Como contribuir com o Laravel 10

Embora Laravel seja mantido por uma equipe central, é ativamente desenvolvido por mais de 3.000 colaboradores voluntários.

Você quer ser um desses colaboradores e ajudar a moldar o futuro do Laravel? Se você respondeu sim, você poderia ajudar desenvolvedores de todo o mundo adicionando um novo recurso, corrigindo um bug ou mesmo reescrevendo uma parte confusa da documentação.

Para contribuir com o Laravel 10, aqui está o que você precisa fazer:

  1. Vá até o repositório GitHub do Laravel e confira os pedidos de pull marcados com [10.x] no título. Isso lhe dará uma imagem clara de todos os pedidos de pull para o Laravel 10. Se um dos RPs aborda a contribuição que você pretendia fazer, veja se você pode melhorá-la.
  2. Se à sua contribuição planejada ainda não foi endereçada por outra pessoa, então você mesmo poderá criar uma PR.
  3. Nem tudo vale a pena adicionar à base de código do framework. Portanto, esforce-se para implementar apenas melhorias que serão fáceis de manter no futuro e ajudarão a grande maioria da comunidade Laravel.
  4. Certifique-se de seguir as diretrizes de contribuição do Laravel para ter uma melhor chance de que suas alterações sejam mescladas com o framework.

Outro motivo para amar o Laravel 10 é que ele permite que você ganhe dinheiro por suas contribuições com caça a bugs! Vamos dar uma olhada nisso a seguir.

Concurso de caça a bugs do Laravel 10

Concurso de caça a bugs do Laravel 10
Concurso de caça a bugs do Laravel 10

Laravel 10 anunciou um excelente concurso no qual um contribuinte aleatório tem a chance de ganhar $1,000. Este foi o primeiro concurso de tipo na história do Laravel. Ele foi projetado para encorajar a comunidade a encontrar e corrigir bugs escondidos no Laravel 10.

As regras eram simples:

  • Somente PR submetidas à branch 10.x do repositório laravel/framework são elegíveis.
  • Somente correções de bugs “genuínos” foram consideradas. Novas funcionalidades, refatoração e correções de erros de digitação não foram consideradas.
  • Toda correção de bugs deve ser suportada por um teste.
  • As correções de bugs aceitas foram rotuladas no GitHub, e um vencedor aleatório será anunciado após a conclusão do concurso.

O concurso terminou quando a primeira versão estável do Laravel 10 foi lançada em 14 de fevereiro de 2023.

Resumo

Até agora, o Laravel 10 parece ser extremamente promissor, e estamos entusiasmados em cobrir todos os presentes que ele traz para o mundo PHP.

Se você está procurando por mais maneiras de melhorar o desempenho do seu aplicativo Laravel, você pode considerar mudar para um provedor de hospedagem premium. As soluções de hospedagem de aplicativos da Kinsta estão entre as mais rápidas, seguras e fáceis de usar do setor e são especificamente projetadas com os desenvolvedores em mente, oferecendo otimização de produção e suporte especializado 24/7, de nossos próprios desenvolvedores experientes.

Mostafa Said

I’m 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.