{"id":57294,"date":"2023-02-21T09:42:58","date_gmt":"2023-02-21T12:42:58","guid":{"rendered":"https:\/\/kinqsta.com\/pt\/?p=57294&#038;preview=true&#038;preview_id=57294"},"modified":"2023-08-22T03:39:48","modified_gmt":"2023-08-22T06:39:48","slug":"laravel-10","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/","title":{"rendered":"O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos"},"content":{"rendered":"<p>Depois de mais de uma d\u00e9cada desde a introdu\u00e7\u00e3o da popular <a href=\"https:\/\/kinqsta.com\/pt\/blog\/o-que-e-laravel\/\">framework Laravel<\/a>, voc\u00ea j\u00e1 se perguntou: &#8220;O que mais Laravel pode oferecer aos desenvolvedores de PHP?<\/p>\n<p>Dado o quanto ele simplificou o desenvolvimento de PHP tanto para iniciantes quanto para profissionais, alguns podem at\u00e9 argumentar que ele est\u00e1 induzindo os desenvolvedores a acreditar que PHP \u00e9 a linguagem de programa\u00e7\u00e3o mais f\u00e1cil.<\/p>\n\n<p>Ent\u00e3o, Laravel ainda tem mais surpresas reservadas para os <a href=\"https:\/\/kinqsta.com\/pt\/blog\/desenvolvedor-laravel\/\">desenvolvedores Laravel<\/a>? Ou j\u00e1 esgotou todos os meios poss\u00edveis para dar suporte aos desenvolvedores de PHP?<\/p>\n<p>Nessa vers\u00e3o, podemos esperar que o Laravel 10 tenha muitas novidades interessantes a oferecer. \u00c9 o que descobriremos neste artigo, enquanto fazemos uma viagem pelas novas funcionalidades, corre\u00e7\u00f5es, m\u00e9todos e pacotes recentemente depreciados do Laravel 10.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Agenda de lan\u00e7amento do Laravel 10<\/h2>\n<p>A equipe central do Laravel costumava lan\u00e7ar duas vers\u00f5es principais anualmente (uma a cada seis meses).<\/p>\n<p>No entanto, o ciclo de lan\u00e7amento mudou quando o criador do Laravel, Taylor Otwell, <a href=\"https:\/\/blog.laravel.com\/updates-to-laravels-versioning-policy\">anunciou<\/a> que lan\u00e7aria um grande lan\u00e7amento a cada ano. Isso permite que a equipe principal e a comunidade dediquem mais tempo e esfor\u00e7o a vers\u00f5es espec\u00edficas da framework, introduzindo novos recursos poderosos sem interromper as altera\u00e7\u00f5es.<\/p>\n<p>O Laravel 10 estava programado para ser lan\u00e7ado em 7 de fevereiro de 2023, ap\u00f3s o lan\u00e7amento do <a href=\"https:\/\/kinqsta.com\/pt\/blog\/laravel-9\/\">Laravel 9<\/a> 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.<\/p>\n<p>O Laravel 11 dever\u00e1 ser lan\u00e7ado no primeiro trimestre de fevereiro de 2024.<\/p>\n<p>Al\u00e9m disso, de acordo com a <a href=\"https:\/\/laravel.com\/docs\/10.x\/releases#support-policy\" target=\"_blank\" rel=\"noopener noreferrer\">pol\u00edtica de suporte<\/a>, corre\u00e7\u00f5es de bugs s\u00e3o oferecidas por 18 meses e atualiza\u00e7\u00f5es de seguran\u00e7a por dois anos para todas as vers\u00f5es do Laravel.<\/p>\n<p>A seguir est\u00e3o as corre\u00e7\u00f5es de bugs esperadas e o cronograma de atualiza\u00e7\u00f5es de seguran\u00e7a:<\/p>\n<ul>\n<li>Laravel 9 continuar\u00e1 a receber corre\u00e7\u00f5es de bugs at\u00e9 8 de agosto de 2023 e corre\u00e7\u00f5es de seguran\u00e7a at\u00e9 6 de fevereiro de 2024.<\/li>\n<li>Laravel 10 receber\u00e1 corre\u00e7\u00f5es de bugs at\u00e9 6 de agosto de 2024 e corre\u00e7\u00f5es de seguran\u00e7a at\u00e9 4 de fevereiro de 2025.<\/li>\n<li>O Laravel 11 dever\u00e1 receber corre\u00e7\u00f5es de bugs at\u00e9 5 de agosto de 2025 e corre\u00e7\u00f5es de seguran\u00e7a at\u00e9 3 de fevereiro de 2026.<\/li>\n<\/ul>\n<h2>Voc\u00ea deveria atualizar para o Laravel 10?<\/h2>\n<p>\u00c9 importante lembrar que nem sempre precisamos atualizar a vers\u00e3o do nosso aplicativo Laravel para a vers\u00e3o mais recente assim que uma nova vers\u00e3o for lan\u00e7ada.<\/p>\n<p>Laravel \u00e9 uma framework de c\u00f3digo aberto, o que significa que quando instalamos uma nova inst\u00e2ncia do Laravel em nossa m\u00e1quina, possu\u00edmos o c\u00f3digo base da framework. Isso significa que, mesmo que a vers\u00e3o do framework que nosso aplicativo esteja usando n\u00e3o seja mais suportada, o aplicativo ainda funcionar\u00e1, mas precisaremos mant\u00ea-lo atualizado por conta pr\u00f3pria.<\/p>\n<p>Por esse motivo, \u00e9 amplamente sugerido que a estabilidade do aplicativo seja priorizada em rela\u00e7\u00e3o \u00e0s atualiza\u00e7\u00f5es da framework.<\/p>\n<p>Resumindo, voc\u00ea deve considerar a atualiza\u00e7\u00e3o para o Laravel 10 quando:<\/p>\n<ul>\n<li>O aplicativo est\u00e1 est\u00e1vel em sua vers\u00e3o atual e funciona sem problemas.<\/li>\n<li>A nova vers\u00e3o adiciona um recurso que seu aplicativo requer ou corrige um problema que seu aplicativo est\u00e1 enfrentando.<\/li>\n<li>O aplicativo ser\u00e1 bem testado antes de implementar as mudan\u00e7as de atualiza\u00e7\u00e3o na produ\u00e7\u00e3o.<\/li>\n<\/ul>\n<h2>As 10 atualiza\u00e7\u00f5es do Laravel<\/h2>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-21.png\" alt=\"Laravel 10.\" width=\"1024\" height=\"576\"><figcaption class=\"wp-caption-text\">Laravel 10.<\/figcaption><\/figure>\n<p>Kinsta \u00e9 um grande f\u00e3 do Laravel. \u00c9 por isso que reunimos os destaques do Laravel 8 em um \u00fanico artigo para que voc\u00ea possa us\u00e1-lo como refer\u00eancia e guia para aproveitar todas as novas funcionalidades. Portanto, recomendamos que salve esta p\u00e1gina e a revisite de tempos em tempos.<\/p>\n<h3>Novos recursos e atualiza\u00e7\u00f5es no Laravel 10<\/h3>\n<p>N\u00e3o h\u00e1 d\u00favida de que a parte mais emocionante de qualquer novo lan\u00e7amento \u00e9 a adi\u00e7\u00e3o de novos recursos. Ent\u00e3o, sem mais delongas, vamos come\u00e7ar dando uma olhada nas novas funcionalidades e atualiza\u00e7\u00f5es no Laravel 10.<\/p>\n<h4>1. PHP 8.1: O cora\u00e7\u00e3o do Laravel 10<\/h4>\n<p>O PHP 8.1 \u00e9 a vers\u00e3o m\u00ednima do PHP necess\u00e1ria para o Laravel 10. Alguns recursos do PHP 8.1, como B. Laravel 10, usam propriedades readonly e array_is_list.<\/p>\n<h4>2. Suporte para PHP 8.2<\/h4>\n<p>O PHP 8.2 foi lan\u00e7ado em 8 de dezembro de 2022, apenas dois meses antes da data de lan\u00e7amento do Laravel 10. Ainda assim, isso n\u00e3o deve impedi-lo de utilizar as funcionalidades do PHP 8.2, pois sem fazer nada extra, o Laravel 10 est\u00e1 pronto para o PHP 8.2.<\/p>\n<p>Na verdade, todo o ecossistema Laravel, incluindo Forge, Vapor, e Envoyer, suporta PHP 8.2, e voc\u00ea pode at\u00e9 mesmo usar <a href=\"https:\/\/blog.laravel.com\/laravel-loves-php-82\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.2 com Laravel 9<\/a>. Qu\u00e3o legal \u00e9 isso?<\/p>\n<h4>3. Atualiza\u00e7\u00e3o dos pacotes oficiais do Laravel<\/h4>\n<p>N\u00e3o apenas a framework \u00e9 mantida e atualizada regularmente, mas tamb\u00e9m todos os pacotes oficiais e o ecossistema.<\/p>\n<p>Abaixo listamos os pacotes oficiais mais recentes do Laravel que foram atualizados para suportar o Laravel 10:<\/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>Outro presente para os f\u00e3s de Rails, Vue, React e Svelte, <a href=\"https:\/\/kinqsta.com\/pt\/blog\/laravel-inertia\/\">Inertiajs 1.0.1<\/a> tamb\u00e9m suporta Laravel 10.<\/p>\n<h4>4. Atualiza\u00e7\u00e3o da vers\u00e3o Predis<\/h4>\n<p>O Predis \u00e9 um cliente <a href=\"https:\/\/kinqsta.com\/pt\/blog\/banco-de-dados-in-memory\/\">Redis<\/a> robusto para PHP que pode ajudar voc\u00ea a <a href=\"https:\/\/kinqsta.com\/pt\/blog\/cache-do-laravel\/\">maximizar o cache<\/a> e proporcionar uma experi\u00eancia fant\u00e1stica ao usu\u00e1rio. Anteriormente, o Laravel suportava as vers\u00f5es 1 e 2 do Predis, mas a partir do Laravel 6, o framework n\u00e3o oferece mais suporte \u00e0 vers\u00e3o 1 do Predis.<\/p>\n<p>Embora a documenta\u00e7\u00e3o do Laravel <a href=\"https:\/\/laravel.com\/docs\/10.x\/redis\" target=\"_blank\" rel=\"noopener noreferrer\">mencione Predis<\/a> como o pacote para interagir com Redis, voc\u00ea tamb\u00e9m pode usar a <a href=\"https:\/\/github.com\/phpredis\/phpredis\/\" target=\"_blank\" rel=\"noopener noreferrer\">extens\u00e3o oficial do PHP<\/a>. Esta extens\u00e3o fornece uma API para a comunica\u00e7\u00e3o com os servidores Redis.<\/p>\n<h4>5. Declara\u00e7\u00f5es tipo nativo<\/h4>\n<p>Laravel costumava utilizar DocBlocks em seu esqueleto do c\u00f3digo para esclarecer o que uma parte de c\u00f3digo faz e que tipos de par\u00e2metros ou respostas esperar. No entanto, gra\u00e7as \u00e0s declara\u00e7\u00f5es de tipo nativo no Laravel 10, isso mudar\u00e1.<\/p>\n<p>A melhor maneira de explicar esta mudan\u00e7a \u00e9 com um exemplo simples.<\/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;ficar\u00e1 assim:<\/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>Essa altera\u00e7\u00e3o \u00e9 apenas para experi\u00eancia do desenvolvedor, pois o IDE conhece o formato dos par\u00e2metros e a resposta esperada. Fornece tipos mais claros onde os tipos PHP nativos n\u00e3o s\u00e3o poss\u00edveis. Portanto, ajuda os editores de c\u00f3digo a usar o recurso de preenchimento autom\u00e1tico para melhorar o desempenho.<\/p>\n<h4>6. Todas as regras de valida\u00e7\u00e3o s\u00e3o invoc\u00e1veis por padr\u00e3o<\/h4>\n<p>Se voc\u00ea deseja que suas regras de valida\u00e7\u00e3o sejam invoc\u00e1veis \u200b\u200bno Laravel 9, voc\u00ea precisa adicionar uma flag <code>--invokable<\/code> ap\u00f3s o comando do Artisan. Todas as regras do Laravel 10 podem ser invoc\u00e1veis por padr\u00e3o, ent\u00e3o isso n\u00e3o \u00e9 mais necess\u00e1rio. Ent\u00e3o voc\u00ea pode criar uma nova regra de invoca\u00e7\u00e3o no Laravel 10 executando o seguinte comando:<\/p>\n<pre><code class=\"language-php\">php artisan make:rule CustomRule<\/code><\/pre>\n<h4>7. Suporte nativo para modifica\u00e7\u00e3o de coluna<\/h4>\n<p>Para eliminar a necessidade do pacote DBAL (<code>doctrine\/dbal<\/code>) ao usar o m\u00e9todo <code>change()<\/code> para modificar colunas, o Laravel 10 introduziu uma nova funcionalidade que permite aos desenvolvedores modificarem colunas com <a href=\"https:\/\/kinqsta.com\/pt\/blog\/postgresql-vs-sql-server\/\">MySQL, PostgreSQL<\/a>, e <a href=\"https:\/\/kinqsta.com\/pt\/blog\/postgresql-vs-sql-server\/\">SQL Server<\/a> sem a necessidade de pacotes extras. Embora essa seja uma <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/45487#issuecomment-1371500000\">mudan\u00e7a significativa e arriscada<\/a>, acreditamos que ela valha a pena, j\u00e1 que elimina a depend\u00eancia de um pacote adicional.<\/p>\n<p>Para entender melhor o novo recurso, veja o exemplo abaixo:<\/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>Agora, estamos assumindo que temos uma coluna para <code>user_balance<\/code> e queremos mudar seu tipo. A partir do Laravel 10, podemos simplesmente fazer isso:<\/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>O c\u00f3digo acima mudar\u00e1 com sucesso o tipo da coluna, mas tamb\u00e9m deixar\u00e1 de lado os atributos <code>UNSIGNED<\/code>, <code>DEFAULT<\/code>, e <code>COMMENT<\/code>. Portanto, \u00e9 importante lembrar de adicionar todos os atributos quando voc\u00ea estiver mudando o tipo de uma coluna:<\/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>No caso de voc\u00ea ter m\u00faltiplas <a href=\"https:\/\/kinqsta.com\/pt\/blog\/banco-de-dados-laravel\/\">conex\u00f5es de banco de dados<\/a> e j\u00e1 ter instalado o DBAL, \u00e9 recomendado chamar o m\u00e9todo <code>Schema::useNativeSchemaOperationsIfPossible()<\/code> dentro do m\u00e9todo de inicializa\u00e7\u00e3o em <code>AppProvidersAppServiceProvider<\/code> para poder usar opera\u00e7\u00f5es de esquema nativo e usar opera\u00e7\u00f5es nativas antes de confiar no pacote (SQLite, por exemplo, ainda n\u00e3o suporta isso):<\/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. Recupera\u00e7\u00e3o nativa do tipo de coluna<\/h4>\n<p>Outra funcionalidade not\u00e1vel do Laravel 10 \u00e9 a capacidade de usar o m\u00e9todo <code>Schema::getColumnType<\/code> sem ter que confiar no pacote <code>doctrine\/dbal<\/code>. Atualmente usamos <code>Schema::getColumnType<\/code> com DBAL para obter o tipo de coluna. DBAL mapeia cada tipo de coluna nativa para seu equivalente de tipo DBAL, e n\u00e3o suporta muitos dos tipos de coluna usados por Laravel em v\u00e1rios bancos de dados.<\/p>\n<p>No Laravel 10, por outro lado, o novo m\u00e9todo <code>Schema::getColumnType<\/code> retornar\u00e1 o tipo de coluna real ao inv\u00e9s de seu equivalente DBAL. Ele tamb\u00e9m permite que voc\u00ea escreva testes de integra\u00e7\u00e3o para o novo recurso de modifica\u00e7\u00e3o de coluna nativa. Voc\u00ea pode usar este recurso para obter o nome do tipo de dados ou a defini\u00e7\u00e3o completa do tipo da coluna especificada:<\/p>\n<pre><code class=\"language-php\">Schema::getColumnType('products', 'price'); \/\/ decimal<\/code><\/pre>\n<h4>9. Algoritmo de Hashing mais r\u00e1pido<\/h4>\n<p>xxHash \u00e9 um algoritmo de Hash que \u00e9 incrivelmente r\u00e1pido. Ele apresenta grande aleatoriedade e dispers\u00e3o de sa\u00edda, bem como a singularidade para reduzir colis\u00f5es. Como o PHP 8.1 fornece suporte para xxh128, e o Laravel 10 roda no PHP 8.1, ter um algoritmo de hash t\u00e3o confi\u00e1vel dentro do Laravel 10 \u00e9 ideal.<\/p>\n<p>Vale a pena mencionar que <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/45371#issuecomment-1359597016\" target=\"_blank\" rel=\"noopener noreferrer\">Taylor destacou<\/a> durante sua revis\u00e3o desta mudan\u00e7a que alguns pacotes de terceiros podem confiar que os nomes dos arquivos estejam no formato exato, como o hash SHA-1, que \u00e9 o algoritmo que Laravel costumava usar para hashing. Portanto, se voc\u00ea est\u00e1 planejando uma atualiza\u00e7\u00e3o para o Laravel 10, seria s\u00e1bio checar novamente isso em qualquer pacote de terceiros que voc\u00ea esteja usando em seu aplicativo.<\/p>\n<h4>10. Suporte para o m\u00e9todo<code>whereExists()<\/code> na classe Eloquent Builder<\/h4>\n<p>Atualmente, o uso do <code>whereExists()<\/code> requer a configura\u00e7\u00e3o da consulta aninhada usando um fechamento. Felizmente, com o Laravel 10, agora \u00e9 poss\u00edvel incluir um Eloquent Builder como uma consulta aninhada. Ele permite o uso de m\u00e9todos de constru\u00e7\u00e3o personalizados, escopos de modelos, e assim por diante.<\/p>\n<p>Por exemplo, normalmente fazemos isso se quisermos usar <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>Com o Laravel 10, podemos simplesmente fazer isso:<\/p>\n<pre><code class=\"language-php\">Order::whereExists(\n  Product::whereColumn('products.order_id', 'orders.id')\n);<\/code><\/pre>\n<h4>11. Otimiza\u00e7\u00e3o de carregamento ansioso (Eager Loading)<\/h4>\n<p>Uma das novas funcionalidades interessantes do Laravel 10 \u00e9 a otimiza\u00e7\u00e3o do carregamento ansioso quando n\u00e3o h\u00e1 chaves para serem carregadas. Essa mudan\u00e7a \u00e9 mais uma corre\u00e7\u00e3o do que uma nova funcionalidade, uma vez que resolve um problema existente no qual as rela\u00e7\u00f5es de carregamento \u00e1vido podem resultar em um grande n\u00famero de consultas invi\u00e1veis.<\/p>\n<p>Atualmente, quando as rela\u00e7\u00f5es de carregamento ansioso n\u00e3o possuem chaves para serem carregadas, o Laravel ainda executa uma consulta semelhante a esta:<\/p>\n<pre><code class=\"language-php\">select * from `table_name` where 0 = 1<\/code><\/pre>\n<p>Entretanto, a nova atualiza\u00e7\u00e3o do Laravel 10 verifica se h\u00e1 alguma chave dispon\u00edvel em primeiro lugar e, se n\u00e3o houver nenhuma, fornece uma cole\u00e7\u00e3o vazia, eliminando a necessidade de consultas desnecess\u00e1rias ao banco de dados.<\/p>\n<h4>12. O par\u00e2metro <code>$path<\/code>\u00e9 opcional para os m\u00e9todos de sistema de arquivos<\/h4>\n<p>No Laravel 10, o par\u00e2metro <code>$path<\/code> \u00e9 opcional para os m\u00e9todos abaixo:<\/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>Ent\u00e3o, ao inv\u00e9s de fazer isso para armazenar um arquivo carregado no <a href=\"https:\/\/kinqsta.com\/pt\/blog\/amazon-s3-backups\/\">Amazon S3<\/a>:<\/p>\n<pre><code class=\"language-php\">Storage::disk('s3')-&gt;putFile(\u2018post\/images', $uploadedFile);<\/code><\/pre>\n<p>&#8230;podemos fazer isso:<\/p>\n<pre><code class=\"language-php\">Storage::disk(Disk::PostImages)-&gt;putFile($uploadedFile)<\/code><\/pre>\n<h4>13. Express\u00f5es do banco de dados e formata\u00e7\u00e3o espec\u00edfica de gram\u00e1tica<\/h4>\n<p>Apenas quatro dias antes do lan\u00e7amento do Laravel 10, a equipe central do Laravel decidiu fundir uma funcionalidade brilhante que aborda um grande desafio quando se trabalha com m\u00faltiplos bancos de dados.<\/p>\n<p>Nas vers\u00f5es anteriores do PostgreSQL e MySQL, para retornar o primeiro valor de uma lista como um alias, era necess\u00e1rio escrever o c\u00f3digo bruto do banco de dados, como o exemplo a seguir:<\/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>No c\u00f3digo acima, estamos usando a <a href=\"https:\/\/www.w3schools.com\/sql\/func_sqlserver_coalesce.asp\" target=\"_blank\" rel=\"noopener noreferrer\">fun\u00e7\u00e3o<code>COALESCE()<\/code><\/a> \u00a0para retornar o primeiro valor n\u00e3o-nulo como um pseud\u00f4nimo chamado <strong>first visitor<\/strong>. Ent\u00e3o, toda vez que precisar\u00edamos realizar uma opera\u00e7\u00e3o como esta, ter\u00edamos que escrever o c\u00f3digo do banco de dados bruto novamente.<\/p>\n<p>O novo recurso nos permite criar classes de express\u00e3o reutiliz\u00e1veis que implementam as express\u00f5es e declara\u00e7\u00f5es que precisamos para nossas consultas apenas uma vez. Isso eliminar\u00e1 a necessidade de escrever c\u00f3digo do banco de dados bruto quando quisermos usar mais funcionalidades do banco de dados.<\/p>\n<p>Voltando ao exemplo acima, vamos seguir a nova abordagem do Laravel 10 para alcan\u00e7ar o mesmo resultado, mas sem usar a sintaxe do c\u00f3digo bruto do banco de dados.<\/p>\n<p>Primeiro, precisar\u00edamos criar duas classes &#8211; uma para o aliasing, e outra para o uso da fun\u00e7\u00e3o <code>COALESCE()<\/code>:<\/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>Ent\u00e3o, podemos fazer isso para alcan\u00e7ar o resultado desejado tanto para o MySQL quanto para o 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>Voc\u00ea pode achar dif\u00edcil escrever, mas definitivamente vale a pena porque voc\u00ea s\u00f3 precisa escrever uma vez e evitar o inc\u00f4modo de alterar a sintaxe ao lidar com v\u00e1rios bancos de dados.<\/p>\n<p>Al\u00e9m disso, segundo o criador do <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/44784\" target=\"_blank\" rel=\"noopener noreferrer\">pedido pull<\/a>, Tobias Petry, esta mudan\u00e7a abrir\u00e1 a porta para in\u00fameras possibilidades de pacotes que fornecer\u00e3o as classes de express\u00e3o bruta mais populares. Ele tamb\u00e9m declarou que as disponibilizar\u00e1 para a comunidade em um <a href=\"https:\/\/github.com\/tpetry\/laravel-query-expressions\">pacote dedicado<\/a> ap\u00f3s o lan\u00e7amento do Laravel 10.<\/p>\n<h4>14. Atualiza\u00e7\u00e3o do SQL Server para utilizar <code>FETCH<\/code> e <code>OFFSET<\/code> em consultas que n\u00e3o incluem <code>orderBy<\/code><\/h4>\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 ent\u00e3o produz a instru\u00e7\u00e3o SQL que usa <a href=\"https:\/\/www.geeksforgeeks.org\/sql-offset-fetch-clause\/\" target=\"_blank\" rel=\"noopener noreferrer\"><code>FETCH<\/code> e <code>OFFSET<\/code><\/a>:<\/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>Entretanto, nas vers\u00f5es anteriores do Laravel, se voc\u00ea remover o <code>orderBy<\/code> da consulta, voc\u00ea reverte para o m\u00e9todo antigo de compensa\u00e7\u00e3o de resultados:<\/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>Mas agora no Laravel 10, esta <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/44937\" target=\"_blank\" rel=\"noopener noreferrer\">nova atualiza\u00e7\u00e3o<\/a> permitir\u00e1 que o seu aplicativo Laravel 10 utilize <code>FETCH<\/code> e <code>OFFSET<\/code> mesmo quando <code>orderBy<\/code> n\u00e3o estiver presente:<\/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>Esta atualiza\u00e7\u00e3o <a href=\"https:\/\/gist.github.com\/dunhamjared\/cb40bbf294ed6f8e48bd60010a31b4f3\" target=\"_blank\" rel=\"noopener noreferrer\">melhora a velocidade em 33%<\/a> e requer menos etapas de execu\u00e7\u00e3o.<\/p>\n<h4>15. Suporte PHPUnit 10<\/h4>\n<p>Laravel 10 suporta PHPUnit 10. \u00c9 uma framework para testes unit\u00e1rios para PHP e a vers\u00e3o 10 foi <a href=\"https:\/\/phpunit.de\/announcements\/phpunit-10.html\" target=\"_blank\" rel=\"noopener noreferrer\">lan\u00e7ada em 3 de fevereiro de 2023<\/a>. O Laravel 10 ainda ter\u00e1 suporte para PHPUnit 9 e 8.<\/p>\n<h4>16. Melhorias de seguran\u00e7a para a classe <code>Timebox<\/code><\/h4>\n<p>Laravel 10 inclui melhorias de seguran\u00e7a para a classe <code>Timebox<\/code>, cujo objetivo \u00e9 proteger o <a href=\"https:\/\/tom.vg\/papers\/timeless-timing-attack_usenix2020.pdf\">aplicativo contra-ataques\u00a0intemporais<\/a>. A classe <code>Timebox<\/code> \u00e9 implementada no m\u00e9todo <code>hasValidCredentials<\/code>.<\/p>\n<p>A classe <code>Timebox<\/code> agora tem suporte para lidar com exce\u00e7\u00f5es lan\u00e7adas durante a execu\u00e7\u00e3o de uma callback da Timebox.<\/p>\n<h4>17. \u00a0O comportamento do m\u00e9todo <code>dispatch()<\/code> \u00e9 o mesmo em todas as vers\u00f5es do Laravel 10.<\/h4>\n<p>\u00a0<\/p>\n<p>O m\u00e9todo <code>dispatch()<\/code> dentro do trait <code>DispatchesJobs<\/code> agora verifica trabalhos \u00fanicos da mesma forma que a fun\u00e7\u00e3o auxiliar global <code>dispatch()<\/code>. Isso faz com que os m\u00e9todos <code>dispatch()<\/code> adotem as mesmas funcionalidades em todas as vers\u00f5es do Laravel 10.<\/p>\n<h4>18. Laravel Pennant<\/h4>\n<p>Se voc\u00ea j\u00e1 trabalhou em um aplicativo web que est\u00e1 sendo constantemente atualizado com novas funcionalidades, voc\u00ea entende o qu\u00e3o vitais s\u00e3o as flags de recursos. No entanto, preservar as flags de funcionalidades pode exigir uma quantidade significativa de trabalho para ser feito corretamente. Mas n\u00e3o se preocupe, o Laravel tem a solu\u00e7\u00e3o perfeita com o novo pacote Laravel Pennant.<\/p>\n<p><a href=\"https:\/\/laravel.com\/docs\/10.x\/pennant\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Pennant<\/a> fornece uma solu\u00e7\u00e3o f\u00e1cil de usar para manter as bandeiras de recursos. Ele vem at\u00e9 mesmo com um driver in-memory array e um banco de dados.<\/p>\n<p>Voc\u00ea pode definir facilmente um novo recurso:<\/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>Ent\u00e3o voc\u00ea conseguir\u00e1 verificar se o usu\u00e1rio tem ou n\u00e3o acesso a este recurso:<\/p>\n<pre><code class=\"language-php\">use LaravelPennantFeature;\nif (Feature::active('new-color-button')) {\n  \/\/ ...\n}<\/code><\/pre>\n<p>Em Laravel Blade \u00e9 ainda melhor:<\/p>\n<pre><code class=\"language-php\">@feature('new-color-button')\n\/\/ Kinsta Rules!!\n@endfeature<\/code><\/pre>\n<h4>19. Intera\u00e7\u00e3o do processo Laravel<\/h4>\n<p>A nova intera\u00e7\u00e3o de processo do Laravel 10 simplifica a execu\u00e7\u00e3o de testes e os processos CLI. Fornece uma API simples para testes de carga. Vamos ver um exemplo do <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/45314\" target=\"_blank\" rel=\"noopener noreferrer\">PR original<\/a> para o recurso de 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>Voc\u00ea provavelmente j\u00e1 notou como o c\u00f3digo acima \u00e9 simples e limpo. Passando aos processos de build, as coisas s\u00f3 ficam melhores:<\/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>Agora, para usar este novo recurso em testes, voc\u00ea pode criar um processo novo e falso como este:<\/p>\n<pre><code class=\"language-php\">Process::fake([\n  'ls *' =&gt; Process::result('Hello From Kinsta'),\n]);<\/code><\/pre>\n<p>Ent\u00e3o voc\u00ea pode executar o processo falso e usar as novas <a href=\"https:\/\/laravel.com\/docs\/10.x\/processes#available-assertions\" target=\"_blank\" rel=\"noopener noreferrer\">asser\u00e7\u00f5es dispon\u00edveis<\/a>:<\/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>O Pest Scaffolding agora est\u00e1 habilitado por padr\u00e3o ao criar novos projetos do Laravel. Para habilitar este recurso, use a flag <code>--pest<\/code> ao construir um novo aplicativo com o instalador Laravel:<\/p>\n<pre><code class=\"language-php\">laravel new example-kinsta-app --pest<\/code><\/pre>\n<h4>21. Fun\u00e7\u00e3o auxiliar de senha de string<\/h4>\n<p>Laravel 10 pode criar uma senha aleat\u00f3ria e segura com um determinado comprimento:<\/p>\n<pre><code class=\"language-php\">$password = Str::password(12);<\/code><\/pre>\n<h3>M\u00e9todos e pacotes depreciados no Laravel 10<\/h3>\n<p>Em seguida, vamos dar uma olhada nos pacotes e m\u00e9todos, que foram removidos com o lan\u00e7amento do Laravel 10.<\/p>\n<h4>Laravel 10 diz adeus ao PHP 8.0<\/h4>\n<p>O framework Laravel n\u00e3o oferece mais suporte para o PHP 8.0 no Laravel 10. Portanto, se voc\u00ea est\u00e1 planejando atualizar seu aplicativo para o Laravel 10, primeiro deve atualizar a vers\u00e3o do PHP para o <a href=\"https:\/\/kinqsta.com\/pt\/blog\/php-8-1\/\">PHP 8.1<\/a> ou <a href=\"https:\/\/kinqsta.com\/pt\/blog\/php-8-2\/\">PHP 8.2<\/a>.<\/p>\n<h4>Remo\u00e7\u00e3o de m\u00e9todos depreciados<\/h4>\n<p>A <a href=\"https:\/\/laravel.com\/docs\/10.x\/upgrade\" target=\"_blank\" rel=\"noopener noreferrer\">documenta\u00e7\u00e3o da Laravel<\/a> do Laravel foi atualizada com todas as mudan\u00e7as e deprecia\u00e7\u00f5es importantes. Se voc\u00ea for migrar um projeto atual para o Laravel 10, qualquer c\u00f3digo que utilize um m\u00e9todo obsoleto deve ser reescrito em uma nova abordagem para obter o mesmo resultado.<\/p>\n<p>Segue abaixo uma lista de algumas das deprecia\u00e7\u00f5es:<\/p>\n<ul>\n<li>O m\u00e9todo <code>Route::home<\/code> (depreciado no Laravel 9)<\/li>\n<li>Fun\u00e7\u00f5es e m\u00e9todos em torno de <code>dispatchNow<\/code>, depreciados para encorajar os desenvolvedores a usar <a href=\"https:\/\/laravel.com\/docs\/10.x\/queues#synchronous-dispatching\" target=\"_blank\" rel=\"noopener noreferrer\"><code>dispatchSync<\/code><\/a> o \u00fanico m\u00e9todo suportado para envio imediato<\/li>\n<li>O m\u00e9todo <code>getBaseQuery<\/code>, que tem um equivalente em <code>toBase<\/code><\/li>\n<li>A classe <code>MaintenanceModeException<\/code><\/li>\n<li>Trait <code>MocksApplicationServices<\/code><\/li>\n<li>O m\u00e9todo <code>Mail::failures<\/code><\/li>\n<li>A propriedade <code>$dates<\/code> (usa <a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent-mutators#attribute-casting\" target=\"_blank\" rel=\"noopener noreferrer\"><code>$casts<\/code><\/a> ao inv\u00e9s disso)<\/li>\n<li>O m\u00e9todo <code>assertTimesSent()<\/code><\/li>\n<li>Suporte para Predis 1 e DBAL 2<\/li>\n<li>Todas as deprecia\u00e7\u00f5es relacionadas ao <code>doctrine\/dbal<\/code> desde que o Laravel deixou de oferecer suporte \u00e0 vers\u00e3o 2<\/li>\n<\/ul>\n<h2>Como instalar o Laravel 10<\/h2>\n<p>A equipe central do Laravel se certificou de que todos os desenvolvedores pudessem facilmente acessar a framework em diferentes ambientes. Portanto, h\u00e1 v\u00e1rias maneiras de come\u00e7ar com o Laravel 10 em sua m\u00e1quina, e voc\u00ea est\u00e1 totalmente livre para selecionar o que funcionar melhor para voc\u00ea.<\/p>\n<h3>Instale o Laravel 10 no MacOS<\/h3>\n<p>Voc\u00ea pode facilmente come\u00e7ar com Laravel 10 no MacOS usando <a href=\"https:\/\/kinqsta.com\/pt\/blog\/que-e-docker\/\">Docker<\/a> e <a href=\"https:\/\/laravel.com\/docs\/10.x\/sail\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Sail<\/a>. Execute o seguinte comando do terminal do diret\u00f3rio onde voc\u00ea quer instalar o aplicativo, tendo em mente que somente caracteres alfanum\u00e9ricos, h\u00edfens e sublinhados s\u00e3o permitidos para o nome do aplicativo:<\/p>\n<pre><code class=\"language-bash\">curl -s \"https:\/\/laravel.build\/example-kinsta-app\" | bash<\/code><\/pre>\n<p>Ap\u00f3s o processo de instala\u00e7\u00e3o estar completo, v\u00e1 at\u00e9 o diret\u00f3rio do projeto e use Sail para iniciar o novo projeto, digitando o seguinte comando no terminal:<\/p>\n<pre><code class=\"language-bash\">.\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Sail usar\u00e1 sua solu\u00e7\u00e3o integrada para iniciar o projeto Laravel usando Docker e, uma vez terminado, o aplicativo estar\u00e1 pronto em <code>http:\/\/localhost<\/code>.<\/p>\n<h3>Instale o Laravel 10 no Windows 10 e 11<\/h3>\n<p>O <a href=\"https:\/\/docs.docker.com\/desktop\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker Desktop<\/a> pode ser usado para instalar rapidamente o Laravel 10 no Windows. Entretanto, se voc\u00ea estiver usando o Windows 10 ou 11, voc\u00ea deve primeiro habilitar uma das duas op\u00e7\u00f5es a seguir em sua m\u00e1quina:<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/install\" target=\"_blank\" rel=\"noopener noreferrer\">Subsistema Windows para Linux 2 (WSL2)<\/a><\/strong> \u00e9 um recurso do sistema operacional Windows que permite que voc\u00ea execute um sistema de arquivos Linux e ferramentas de linha de comando Linux diretamente no Windows.<\/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 Backend Feature<\/a><\/strong> permite a voc\u00ea criar e operar uma vers\u00e3o de software de um computador conhecido como uma m\u00e1quina virtual.<\/li>\n<\/ul>\n<p>Assim que voc\u00ea tiver cumprido todos os <a href=\"https:\/\/docs.docker.com\/desktop\/install\/windows-install\/#install-docker-desktop-on-windows\" target=\"_blank\" rel=\"noopener noreferrer\">requisitos do Docker<\/a>, voc\u00ea pode executar o seguinte comando em seu terminal:<\/p>\n<pre><code class=\"language-bash\">curl -s https:\/\/laravel.build\/example-kinsta-app | bash<\/code><\/pre>\n<p>Ent\u00e3o use Sail para executar o aplicativo <code><a href=\"http:\/\/localhost\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/localhost<\/a><\/code> executando o seguinte comando do diret\u00f3rio raiz do seu projeto Laravel 10 recentemente instalado:<\/p>\n<pre><code class=\"language-bash\">.\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Por outro lado, muitos desenvolvedores preferem o sistema operacional Linux ao inv\u00e9s de outros sistemas operacionais, pois ele permite que eles trabalhem de forma mais eficiente e r\u00e1pida. Com o WSL, voc\u00ea pode desfrutar da seguran\u00e7a, desempenho e compatibilidade de jogos do <a href=\"https:\/\/ubuntu.com\/tutorials\/install-ubuntu-on-wsl2-on-windows-10#1-overview\" target=\"_blank\" rel=\"noopener noreferrer\">Ubuntu<\/a>. O Ubuntu \u00e9 uma distribui\u00e7\u00e3o Linux ou vers\u00e3o do Linux conhecida por sua facilidade de uso.<\/p>\n<p>Recomendamos que voc\u00ea use o <a href=\"https:\/\/code.visualstudio.com\/\">Visual Studio Code<\/a> e instale a <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.remote-wsl\">extens\u00e3o oficial da Microsoft WSL<\/a> para poder abrir qualquer pasta do Subsistema Windows para Linux e tirar proveito de toda a funcionalidade do vscode. Al\u00e9m disso, a extens\u00e3o <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.vscode-remote-extensionpack\" target=\"_blank\" rel=\"noopener noreferrer\">Desenvolvimento Remoto<\/a> \u00e9 outra op\u00e7\u00e3o referida na documenta\u00e7\u00e3o do Laravel.<\/p>\n<h3>Instale o Laravel 10 com o Composer<\/h3>\n<p>Se voc\u00ea usa macOS ou Windows, o Composer o coloca em funcionamento com Laravel 10 em pouco tempo.<\/p>\n<p>Voc\u00ea precisa primeiro ter certeza de ter o PHP \u2264 8.1, node, npm e Composer instalados em sua m\u00e1quina.<\/p>\n<ul>\n<li><strong>Para macOS:<\/strong> Composer pode ser instalado usando <a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener noreferrer\">Homebrew<\/a>.<\/li>\n<li><strong>Para Windows:<\/strong> A \u00faltima vers\u00e3o est\u00e1vel do Composer pode ser baixada no <a href=\"https:\/\/getcomposer.org\/doc\/00-intro.md#installation-windows\" target=\"_blank\" rel=\"noopener noreferrer\">site oficial do Composer<\/a>.<\/li>\n<\/ul>\n<p>Uma vez instalado, voc\u00ea pode instalar o Laravel Installer globalmente e us\u00e1-lo para instalar seu novo aplicativo Laravel 10:<\/p>\n<pre><code class=\"language-bash\">composer global require laravel\/installer\nlaravel new example-kinsta-app<\/code><\/pre>\n<p>Ou, voc\u00ea pode criar um novo aplicativo Laravel 10 diretamente usando apenas o Composer:<\/p>\n<pre><code class=\"language-bash\">composer create-project laravel\/laravel example-kinsta-app<\/code><\/pre>\n<h2>Como instalar o Laravel 11<\/h2>\n<p>Estamos ainda a um ano do lan\u00e7amento do Laravel 11. No entanto, o Laravel 11 est\u00e1 atualmente dispon\u00edvel para que voc\u00ea teste suas funcionalidades. N\u00e3o s\u00f3 isso, ele tamb\u00e9m inclui <a href=\"https:\/\/github.com\/laravel\/framework\/pulls?q=is%3Apr+is%3Amerged+%5B11.x%5D+in%3Atitle\">alguns PRs fundidos<\/a> no GitHub, como a queda do suporte ao PHP 8.1.<\/p>\n<p>A flag <code>--dev<\/code> no Laravel Installer instala a branch mestre a partir do reposit\u00f3rio <code>laravel\/laravel<\/code>, e agora que o Laravel 10 est\u00e1 dispon\u00edvel, o Laravel 11 estar\u00e1 dispon\u00edvel no ramo mestre. Se voc\u00ea estiver usando o Laravel Installer, tudo o que voc\u00ea precisa fazer \u00e9 executar este comando no seu terminal:<\/p>\n<pre><code class=\"language-php\">laravel new example-kinsta-app --dev<\/code><\/pre>\n<p>Ou, se voc\u00ea preferir usar o <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a>:<\/p>\n<pre><code class=\"language-php\">composer create-project --prefer-dist laravel\/laravel example-kinsta-app dev-master<\/code><\/pre>\n<p>Para entender melhor o comando Composer, aqui vai uma explica\u00e7\u00e3o r\u00e1pida:<\/p>\n<ul>\n<li><strong><code>laravel\/laravel<\/code>:<\/strong> O pacote para a instala\u00e7\u00e3o do Laravel<\/li>\n<li><strong><code>example-kinsta-app<\/code>:<\/strong> O novo diret\u00f3rio para seu novo projeto (pode ser alterado)<\/li>\n<li><strong><code>dev-master<\/code>:<\/strong> A pr\u00f3xima vers\u00e3o do Laravel (neste caso, Laravel 11)<\/li>\n<\/ul>\n<p>Ap\u00f3s instalar o Laravel 11, voc\u00ea pode confirmar a vers\u00e3o navegando para o novo diret\u00f3rio de <strong>exemplos-kinsta-app<\/strong> e rodando este comando Artisan:<\/p>\n<pre><code class=\"language-php\">$ php artisan --version\nLaravel Framework 11.x-dev<\/code><\/pre>\n<h2>Como atualizar um projeto para o Laravel 10<\/h2>\n<p>Voc\u00ea est\u00e1 tentado a atualizar para o Laravel 10? A equipe central do Laravel trabalha duro na documenta\u00e7\u00e3o para fornecer um guia de atualiza\u00e7\u00e3o simples e direto enquanto cobre todas as poss\u00edveis mudan\u00e7as de interrup\u00e7\u00e3o. Fique \u00e0 vontade para verificar o <a href=\"https:\/\/laravel.com\/docs\/master\/upgrade#upgrade-10.0\" target=\"_blank\" rel=\"noopener noreferrer\">guia oficial de atualiza\u00e7\u00e3o do Laravel 10<\/a>.<\/p>\n<p>Voc\u00ea tamb\u00e9m deve ficar de olho no <a href=\"https:\/\/laravelshift.com\/shifts\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Shift<\/a>, agora que o Laravel 10 foi lan\u00e7ado. O Laravel Shift oferece uma abordagem simples e automatizada para atualizar sua vers\u00e3o do Laravel.<\/p>\n<h2>Como implantar os projetos no Laravel 10<\/h2>\n<p>A implanta\u00e7\u00e3o do Laravel 10 n\u00e3o \u00e9 diferente da <a href=\"https:\/\/docs.sevalla.com\/templates\/overview#laravel\">implanta\u00e7\u00e3o do projeto Laravel 9<\/a>.<\/p>\n<p>Aqui est\u00e3o os requisitos do servidor:<\/p>\n<ul>\n<li>PHP \u2264 8.1<\/li>\n<li>Extens\u00e3o PHP tipo C<\/li>\n<li>Extens\u00e3o PHP cURL<\/li>\n<li>Extens\u00e3o PHP DOM<\/li>\n<li>Extens\u00e3o PHP Fileinfo<\/li>\n<li>Extens\u00e3o PHP Mbstring<\/li>\n<li>Extens\u00e3o PHP OpenSSL<\/li>\n<li>Extens\u00e3o PHP PCRE<\/li>\n<li>Extens\u00e3o PHP PDO<\/li>\n<li>Extens\u00e3o PHP Tokenizer<\/li>\n<li>Extens\u00e3o PHP XML<\/li>\n<li>Extens\u00e3o PHP Filter<\/li>\n<li>Extens\u00e3o PHP Hash<\/li>\n<li>Extens\u00e3o PHP Session<\/li>\n<\/ul>\n<p>Voc\u00ea pode implantar e <a href=\"https:\/\/sevalla.com\/application-hosting\/\">hospedar seu projeto Laravel 10 na Kinsta<\/a> em quest\u00e3o de minutos, uma vez que o Laravel \u00e9 um dos muitos <a href=\"https:\/\/docs.sevalla.com\/applications\/reference\/faqs\">frameworks suportados<\/a> para aplicativos hospedados.<\/p>\n<h3>Implantando o Laravel 10 na Kinsta: Guia passo a passo<\/h3>\n<p>H\u00e1 v\u00e1rios benef\u00edcios em <a href=\"https:\/\/sevalla.com\/application-hosting\/\">hospedar e implantar seus aplicativos Laravel na Kinsta<\/a>, incluindo n\u00e3o ter que se preocupar com a configura\u00e7\u00e3o de implanta\u00e7\u00e3o.<\/p>\n<p>Kinsta fornece uma ferramenta amig\u00e1vel e poderosa para a implanta\u00e7\u00e3o de aplicativos, conex\u00e3o com bancos de dados e monitoramento do desempenho em tempo real. Esta ferramenta \u00e9 conhecida como <a href=\"https:\/\/kinqsta.com\/pt\/mykinsta\/\">MyKinsta<\/a>. Esta se\u00e7\u00e3o ir\u00e1 orient\u00e1-lo na implanta\u00e7\u00e3o de um aplicativo Laravel 10 que o utiliza.<\/p>\n<h4>1. Prepare o seu aplicativo<\/h4>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-22.png\" alt=\"A p\u00e1gina inicial de um aplicativo Laravel 10 implantada na Kinsta.\" width=\"1024\" height=\"473\"><figcaption class=\"wp-caption-text\">A p\u00e1gina inicial de um aplicativo Laravel 10 implantada na Kinsta.<\/figcaption><\/figure>\n<p>Assumindo que voc\u00ea tenha um aplicativo Laravel 10 localmente, precisamos ter certeza que ela tenha um <a href=\"https:\/\/kinqsta.com\/pt\/blog\/que-github\/\">reposit\u00f3rio GitHub dispon\u00edvel<\/a>. Usaremos este reposit\u00f3rio para implantar o aplicativo mais tarde.<\/p>\n<p>Voc\u00ea pode incluir um arquivo <strong>.htaccess<\/strong> no diret\u00f3rio raiz do seu aplicativo que cont\u00e9m o seguinte:<\/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>Para Laravel, isso redireciona todos os pedidos para <strong>public\/index.php<\/strong>. Entretanto, se necess\u00e1rio, voc\u00ea pode atualizar este comando enquanto adiciona seu aplicativo (<strong>Configure sua etapa de processos<\/strong>) ou ap\u00f3s a implanta\u00e7\u00e3o, na p\u00e1gina de <strong>Processos<\/strong> do aplicativo. Voc\u00ea pode usar:<\/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. Fa\u00e7a o login no MyKinsta<\/h4>\n<figure style=\"width: 999px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-23.png\" alt=\"A p\u00e1gina de login do MyKinsta.\" width=\"999\" height=\"674\"><figcaption class=\"wp-caption-text\">A p\u00e1gina de login do MyKinsta.<\/figcaption><\/figure>\n<p>V\u00e1 para a <a href=\"https:\/\/my.kinqsta.com\/login?lang=pt\" target=\"_blank\" rel=\"noopener noreferrer\">p\u00e1gina de login do MyKinsta<\/a> e digite seu endere\u00e7o de e-mail e senha. Se voc\u00ea ainda n\u00e3o tem uma conta, voc\u00ea pode <a href=\"https:\/\/kinqsta.com\/pt\/inscreva-se\/?product_type=app-db\">registrar uma nova conta<\/a> e obter $20 de desconto em seu primeiro m\u00eas de <a href=\"https:\/\/kinqsta.com\/pt\/precos\/?plan=visits-business1#application-hosting\">assinatura de qualquer plano<\/a>.<\/p>\n<h4>3. Autorize a Kinsta no GitHub<\/h4>\n<p>Uma vez conectado, voc\u00ea notar\u00e1 que o painel de controle tem op\u00e7\u00f5es para <a href=\"https:\/\/kinqsta.com\/pt\/blog\/plataforma-de-nuvem-para-desenvolvedores\/#wp\">criar um site WordPress<\/a>, <a href=\"https:\/\/kinqsta.com\/pt\/blog\/plataforma-de-nuvem-para-desenvolvedores\/#app\">criar um aplicativo<\/a> ou <a href=\"https:\/\/kinqsta.com\/pt\/blog\/plataforma-de-nuvem-para-desenvolvedores\/#db\">criar um banco de dados<\/a>. clique o bot\u00e3o <strong>Conectar GitHub<\/strong> para integrar com o GitHub.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-24.png\" alt=\"O painel MyKinsta.\" width=\"1024\" height=\"430\"><figcaption class=\"wp-caption-text\">O painel MyKinsta.<\/figcaption><\/figure>\n<p>A seguir, clique no bot\u00e3o <strong>Continuar com GitHub<\/strong>. Se voc\u00ea ainda n\u00e3o estiver logado no GitHub, voc\u00ea ter\u00e1 a op\u00e7\u00e3o de fazer o login. Ent\u00e3o voc\u00ea pode autorizar o aplicativo Kinsta GitHub a acessar sua conta GitHub selecionando <strong>Autorizar Kinsta<\/strong>.<\/p>\n<p>Finalmente, GitHub redirecionar\u00e1 seu navegador para o MyKinsta a fim de continuar configurando o aplicativo.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-25.png\" alt=\"Conectando MyKinsta ao GitHub.\" width=\"1024\" height=\"271\"><figcaption class=\"wp-caption-text\">Conectando MyKinsta ao GitHub.<\/figcaption><\/figure>\n<p>Depois que voc\u00ea estiver conectado ao GitHub, ser\u00e1 mostrado o popup\/modal <strong>Adicionar aplicativo<\/strong>, que tem um menu suspenso para selecionar um reposit\u00f3rio GitHub. Clique no campo reposit\u00f3rio GitHub e selecione <strong>Editar permiss\u00f5es GitHub<\/strong> no menu suspenso.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-26.png\" alt=\"Adicionando um aplicativo no MyKinsta.\" width=\"1024\" height=\"430\"><figcaption class=\"wp-caption-text\">Adicionando um aplicativo no MyKinsta.<\/figcaption><\/figure>\n<p>Isso abrir\u00e1 uma nova aba em seu navegador para a p\u00e1gina do GitHub, onde voc\u00ea poder\u00e1 escolher quais dados Kinsta poder\u00e1 acessar. Ao inv\u00e9s de permitir o acesso a todos os reposit\u00f3rios, considere escolher apenas aquele(s) que voc\u00ea quer que a Kinsta use.<\/p>\n<p>Clique em <strong>Apenas reposit\u00f3rios selecionados <\/strong> e escolha o reposit\u00f3rio que voc\u00ea gostaria de implantar.<\/p>\n<figure style=\"width: 674px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-27.png\" alt=\"Concedendo acesso ao GitHub.\" width=\"674\" height=\"1024\"><figcaption class=\"wp-caption-text\">Concedendo acesso ao GitHub.<\/figcaption><\/figure>\n<p>Ent\u00e3o clique em <strong>Instalar<\/strong>, e voc\u00ea est\u00e1 pronto!<\/p>\n<p>Quando voc\u00ea retornar ao MyKinsta e clicar no campo de <strong>reposit\u00f3rio GitHub<\/strong>, o reposit\u00f3rio autorizado deve estar vis\u00edvel. Uma vez que ativamos a op\u00e7\u00e3o de <strong>implanta\u00e7\u00e3o autom\u00e1tica<\/strong> ao confirmar, o MyKinsta detectar\u00e1 quaisquer altera\u00e7\u00f5es que fizermos no branch implantado e atualizar\u00e1 automaticamente o aplicativo de produ\u00e7\u00e3o de acordo.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-28.png\" alt=\"Selecionando um branch de reposit\u00f3rio para MyKinsta.\" width=\"1024\" height=\"287\"><figcaption class=\"wp-caption-text\">Selecionando um branch de reposit\u00f3rio para MyKinsta.<\/figcaption><\/figure>\n<h4>4. Adicione detalhes b\u00e1sicos do aplicativo<\/h4>\n<p>Agora voc\u00ea pode dar ao aplicativo um nome que ser\u00e1 usado apenas no painel de controle e selecionar entre 25 locais de centro de dados, permitindo que voc\u00ea coloque seu aplicativo no local geogr\u00e1fico mais pr\u00f3ximo de seus usu\u00e1rios. Se voc\u00ea precisar de assist\u00eancia para determinar qual <a href=\"https:\/\/kinqsta.com\/pt\/docs\/informacoes-de-servico\/localizacoes-de-centro-de-dados\/\">centro de dados<\/a> \u00e9 ideal para o seu aplicativo, confira nosso guia para <a href=\"https:\/\/kinqsta.com\/pt\/docs\/informacoes-de-servico\/localizacoes-de-centro-de-dados\/\">escolher a localiza\u00e7\u00e3o <\/a><a href=\"https:\/\/kinqsta.com\/pt\/docs\/informacoes-de-servico\/localizacoes-de-centro-de-dados\/\">correta do centro de dados<\/a>.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-29.png\" alt=\"Adicionando os detalhes b\u00e1sicos de um aplicativo.\" width=\"1024\" height=\"423\"><figcaption class=\"wp-caption-text\">Adicionando os detalhes b\u00e1sicos de um aplicativo.<\/figcaption><\/figure>\n<h4>5. Adicione vari\u00e1veis de ambiente<\/h4>\n<p>A se\u00e7\u00e3o seguinte \u00e9 para adicionar <a href=\"https:\/\/kinqsta.com\/pt\/blog\/o-que-sao-variaveis-de-ambiente\/\">vari\u00e1veis de ambiente<\/a> e a vari\u00e1vel mais importante \u00e9 a <code>APP_KEY<\/code>.<\/p>\n<p>Se voc\u00ea ainda n\u00e3o tem uma chave em seu arquivo .env, voc\u00ea pode gerar uma usando um <a href=\"https:\/\/generate-random.org\/laravel-key-generator\" target=\"_blank\" rel=\"noopener noreferrer\">gerador de chaves Laravel on-line<\/a>. Ent\u00e3o, insira <code>APP_KEY<\/code> no campo <strong>Chave 1<\/strong> e insira a chave do aplicativo gerada no campo <strong>Valor 1<\/strong>.<\/p>\n<p>Finalmente, selecione <strong>Dispon\u00edvel durante o tempo de execu\u00e7\u00e3o<\/strong> e <strong>Dispon\u00edvel durante o processo de build<\/strong>.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-30.png\" alt=\"Adicionando vari\u00e1veis de ambiente no MyKinsta.\" width=\"1024\" height=\"408\"><figcaption class=\"wp-caption-text\">Adicionando vari\u00e1veis de ambiente no MyKinsta.<\/figcaption><\/figure>\n<h4>6. Configure o ambiente de build<\/h4>\n<p>A m\u00e1gica aqui \u00e9 que voc\u00ea n\u00e3o precisa configurar nada! Voc\u00ea pode prosseguir clicando no bot\u00e3o <strong>Continuar<\/strong>, e voil\u00e0: Voc\u00ea completou a configura\u00e7\u00e3o de build. Entretanto, se voc\u00ea quiser melhorar os recursos de build\u00a0 para garantir uma constru\u00e7\u00e3o mais r\u00e1pida, voc\u00ea pode escolher \u00e0 sua preferida no campo <strong>Recursos de build.<\/strong><\/p>\n<p>O campo <strong>Caminho<\/strong> <strong>de build<\/strong> \u00e9 opcional. Voc\u00ea pode deix\u00e1-lo sem nada, e o MyKinsta usar\u00e1 a pasta raiz.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-31.png\" alt=\"Configurando o ambiente de build do aplicativo.\" width=\"1024\" height=\"742\"><figcaption class=\"wp-caption-text\">Configurando o ambiente de build do aplicativo.<\/figcaption><\/figure>\n<h4>7. Configure processos e forma de pagamento<\/h4>\n<p>Para a se\u00e7\u00e3o de Recursos, preencha cada campo com as seguintes informa\u00e7\u00f5es:<\/p>\n<ul>\n<li><strong>Nome do processo:<\/strong> O nome exibido na lista dos processos do seu aplicativo.<\/li>\n<li><strong>Tipo do processo:<\/strong> Escolha cuidadosamente, porque isso n\u00e3o pode ser alterado uma vez que esteja definido. Voc\u00ea pode, entretanto, adicionar e alterar processos adicionais, como um job em segundo plano, na p\u00e1gina de Processos do seu aplicativo ap\u00f3s a implanta\u00e7\u00e3o.<\/li>\n<li><strong>Comando Start:<\/strong> O comando &#8220;Start&#8221; para o seu processo (n\u00e3o \u00e9 necess\u00e1rio).<\/li>\n<li><strong>Tamanho do POD:<\/strong> A capacidade de pod que voc\u00ea espera precisar para o seu processo.<\/li>\n<li><strong>Contagem de inst\u00e2ncias:<\/strong> O n\u00famero de inst\u00e2ncias para o seu processo (m\u00e1x. 50).<\/li>\n<\/ul>\n<p>Note que voc\u00ea pode simplesmente clicar em <strong>Continuar<\/strong> sem preencher o campo de comando <strong>Start<\/strong>, pois Kinsta detecta automaticamente o comando necess\u00e1rio durante a primeira implanta\u00e7\u00e3o.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-32.png\" alt=\"Configurando os processos do aplicativo.\" width=\"1024\" height=\"640\"><figcaption class=\"wp-caption-text\">Configurando os processos do aplicativo.<\/figcaption><\/figure>\n<p>Para o \u00faltimo passo, revise os custos mensais de uso calculados para o seu aplicativo, e ent\u00e3o confirme seu m\u00e9todo de pagamento. Quando terminar, clique no bot\u00e3o <strong>Confirmar m\u00e9todo de pagamento<\/strong>.<\/p>\n<figure style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-33.png\" alt=\"Confirmar detalhes de pagamento.\" width=\"902\" height=\"744\"><figcaption class=\"wp-caption-text\">Confirmar detalhes de pagamento.<\/figcaption><\/figure>\n<p>E voc\u00ea est\u00e1 pronto! Kinsta far\u00e1 todo o trabalho em segundo plano para atender o seu aplicativo.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-34.png\" alt=\"Carregando o processo de implanta\u00e7\u00e3o do aplicativo.\" width=\"1024\" height=\"335\"><figcaption class=\"wp-caption-text\">Carregando o processo de implanta\u00e7\u00e3o do aplicativo.<\/figcaption><\/figure>\n<p>Ent\u00e3o voc\u00ea ter\u00e1 acesso a todos os detalhes do processo de implanta\u00e7\u00e3o, bem como a URL tempor\u00e1ria do aplicativo em tempo real, que voc\u00ea pode posteriormente substituir pelo seu pr\u00f3prio dom\u00ednio.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-35.png\" alt=\"implanta\u00e7\u00e3o bem-sucedida do aplicativo Laravel 10 no MyKinsta.\" width=\"1024\" height=\"746\"><figcaption class=\"wp-caption-text\">implanta\u00e7\u00e3o bem-sucedida do aplicativo Laravel 10 no MyKinsta.<\/figcaption><\/figure>\n<p>Seu aplicativo Laravel 10 est\u00e1 agora em produ\u00e7\u00e3o na Kinsta, mas e se voc\u00ea precisar fazer uma altera\u00e7\u00e3o? Ou mudar o valor do atributo <code>href<\/code> de uma tag \u00e2ncora?<\/p>\n<p>Como ativamos a op\u00e7\u00e3o de <strong>Implanta\u00e7\u00e3o Autom\u00e1tica no Commit<\/strong>, o MyKinsta detectar\u00e1 qualquer altera\u00e7\u00e3o que fizermos no branch implantado e atualizar\u00e1 automaticamente o aplicativo em tempo real de acordo.<\/p>\n<h4>8. Conecte o Laravel 10 ao banco de dados MySQL<\/h4>\n<p>Agora que implantamos nosso aplicativo Laravel 10, podemos construir sem esfor\u00e7o um banco de dados e conectar ao nosso aplicativo. Tudo o que voc\u00ea tem que fazer \u00e9 clicar em <strong>Aplicativos<\/strong> no menu de navega\u00e7\u00e3o \u00e0 esquerda, depois <strong>Adicionar servi\u00e7o<\/strong> e selecionar <b>Banco de Dados<\/b>.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-36.png\" alt=\"Adicionando um novo banco de dados no MyKinsta.\" width=\"1024\" height=\"640\"><figcaption class=\"wp-caption-text\">Adicionando um novo banco de dados no MyKinsta.<\/figcaption><\/figure>\n<p>Ap\u00f3s preencher todos os campos, clique em <strong>Criar banco de dados<\/strong>. Isso ir\u00e1 estabelecer um novo banco de dados pronto para conex\u00f5es internas e externas. Em nosso cen\u00e1rio, exigimos uma conex\u00e3o interna para o projeto Laravel 10 que implantamos.<\/p>\n<p>Para conseguir isso, tudo que voc\u00ea precisa fazer \u00e9 clicar em <strong>Adicionar aplicativo<\/strong> na se\u00e7\u00e3o <strong>Conex\u00f5es internas<\/strong> e selecionar o seu aplicativo. Voc\u00ea pode marcar a caixa de sele\u00e7\u00e3o <strong>Adicionar vari\u00e1veis de<\/strong> <strong>ambiente<\/strong> ao seu aplicativo e o MyKinsta ir\u00e1 preencher todas as vari\u00e1veis <code>.env<\/code> que o seu aplicativo precisar.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-37.png\" alt=\"Conectando um banco de dados para um aplicativo Laravel 10.\" width=\"1024\" height=\"640\"><figcaption class=\"wp-caption-text\">Conectando um banco de dados para um aplicativo Laravel 10.<\/figcaption><\/figure>\n<p>Com isso, seu aplicativo Laravel 10 est\u00e1 implantada e conectada a um banco de dados.<\/p>\n<h2>Como contribuir com o Laravel 10<\/h2>\n<p>Embora Laravel seja mantido por uma equipe central, \u00e9 ativamente desenvolvido por mais de <a href=\"https:\/\/github.com\/laravel\/framework\/graphs\/contributors\" target=\"_blank\" rel=\"noopener noreferrer\">3.000 colaboradores volunt\u00e1rios<\/a>.<\/p>\n<p>Voc\u00ea quer ser um desses colaboradores e ajudar a moldar o futuro do Laravel? Se voc\u00ea respondeu sim, voc\u00ea poderia ajudar desenvolvedores de todo o mundo adicionando um novo recurso, corrigindo um bug ou mesmo reescrevendo uma parte confusa da documenta\u00e7\u00e3o.<\/p>\n<p>Para contribuir com o Laravel 10, aqui est\u00e1 o que voc\u00ea precisa fazer:<\/p>\n<ol>\n<li>V\u00e1 at\u00e9 o <a href=\"https:\/\/github.com\/laravel\/framework\/pulls?page=2&#038;q=is%3Apr+is%3Amerged+10.x\" target=\"_blank\" rel=\"noopener noreferrer\">reposit\u00f3rio GitHub do Laravel<\/a> e confira os pedidos de pull marcados com [10.x] no t\u00edtulo. Isso lhe dar\u00e1 uma imagem clara de todos os pedidos de pull para o Laravel 10. Se um dos RPs aborda a contribui\u00e7\u00e3o que voc\u00ea pretendia fazer, veja se voc\u00ea pode melhor\u00e1-la.<\/li>\n<li>Se \u00e0 sua contribui\u00e7\u00e3o planejada ainda n\u00e3o foi endere\u00e7ada por outra pessoa, ent\u00e3o voc\u00ea mesmo poder\u00e1 criar uma PR.<\/li>\n<li>Nem tudo vale a pena adicionar \u00e0 base de c\u00f3digo do framework. Portanto, esforce-se para implementar apenas melhorias que ser\u00e3o f\u00e1ceis de manter no futuro e ajudar\u00e3o a grande maioria da comunidade Laravel.<\/li>\n<li>Certifique-se de seguir as <a href=\"https:\/\/laravel.com\/docs\/master\/contributions\">diretrizes de contribui\u00e7\u00e3o do Laravel<\/a> para ter uma melhor chance de que suas altera\u00e7\u00f5es sejam mescladas com o framework.<\/li>\n<\/ol>\n<p>Outro motivo para amar o Laravel 10 \u00e9 que ele permite que voc\u00ea ganhe dinheiro por suas contribui\u00e7\u00f5es com ca\u00e7a a bugs! Vamos dar uma olhada nisso a seguir.<\/p>\n<h3>Concurso de ca\u00e7a a bugs do Laravel 10<\/h3>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/02\/Untitled-20.png\" alt=\"Concurso de ca\u00e7a a bugs do Laravel 10\" width=\"1024\" height=\"576\"><figcaption class=\"wp-caption-text\">Concurso de ca\u00e7a a bugs do Laravel 10<\/figcaption><\/figure>\n<p>Laravel 10 anunciou um excelente concurso no qual um contribuinte aleat\u00f3rio tem a chance de ganhar $1,000. Este foi o primeiro concurso de tipo na hist\u00f3ria do Laravel. Ele foi projetado para encorajar a comunidade a encontrar e corrigir bugs escondidos no Laravel 10.<\/p>\n<p>As regras eram simples:<\/p>\n<ul>\n<li>Somente PR submetidas \u00e0 branch 10.x do reposit\u00f3rio <code>laravel\/framework<\/code> s\u00e3o eleg\u00edveis.<\/li>\n<li>Somente corre\u00e7\u00f5es de bugs &#8220;genu\u00ednos&#8221; foram consideradas. Novas funcionalidades, refatora\u00e7\u00e3o e corre\u00e7\u00f5es de erros de digita\u00e7\u00e3o n\u00e3o foram consideradas.<\/li>\n<li>Toda corre\u00e7\u00e3o de bugs deve ser suportada por um teste.<\/li>\n<li>As corre\u00e7\u00f5es de bugs aceitas foram rotuladas no GitHub, e um vencedor aleat\u00f3rio ser\u00e1 anunciado ap\u00f3s a conclus\u00e3o do concurso.<\/li>\n<\/ul>\n<p>O concurso terminou quando a primeira vers\u00e3o est\u00e1vel do Laravel 10 foi lan\u00e7ada em 14 de fevereiro de 2023.<\/p>\n<h2>Resumo<\/h2>\n<p>At\u00e9 agora, o Laravel 10 parece ser extremamente promissor, e estamos entusiasmados em cobrir todos os presentes que ele traz para o mundo PHP.<\/p>\n\n<p>Se voc\u00ea est\u00e1 procurando por mais <a href=\"https:\/\/kinqsta.com\/pt\/blog\/desempenho-laravel\/\">maneiras de melhorar o desempenho do seu aplicativo Laravel<\/a>, voc\u00ea pode considerar mudar para um provedor de hospedagem premium. <a href=\"https:\/\/sevalla.com\/application-hosting\/\">As solu\u00e7\u00f5es de hospedagem de aplicativos da Kinsta<\/a> est\u00e3o entre as mais r\u00e1pidas, seguras e f\u00e1ceis de usar do setor e s\u00e3o especificamente projetadas com os desenvolvedores em mente, oferecendo otimiza\u00e7\u00e3o de produ\u00e7\u00e3o e suporte especializado 24\/7, de nossos pr\u00f3prios desenvolvedores experientes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Depois de mais de uma d\u00e9cada desde a introdu\u00e7\u00e3o da popular framework Laravel, voc\u00ea j\u00e1 se perguntou: &#8220;O que mais Laravel pode oferecer aos desenvolvedores de &#8230;<\/p>\n","protected":false},"author":266,"featured_media":57295,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[984],"class_list":["post-57294","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>O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos<\/title>\n<meta name=\"description\" content=\"Neste artigo, levaremos voc\u00ea em uma jornada pelas novas funcionalidades, corre\u00e7\u00f5es e m\u00e9todos e pacotes recentemente depreciados do 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:\/\/kinqsta.com\/pt\/blog\/laravel-10\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos\" \/>\n<meta property=\"og:description\" content=\"Neste artigo, levaremos voc\u00ea em uma jornada pelas novas funcionalidades, corre\u00e7\u00f5es e m\u00e9todos e pacotes recentemente depreciados do Laravel 10.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-21T12:42:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-22T06:39:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/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=\"Neste artigo, levaremos voc\u00ea em uma jornada pelas novas funcionalidades, corre\u00e7\u00f5es e m\u00e9todos e pacotes recentemente depreciados do Laravel 10.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mostafa Said\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"30 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/\"},\"author\":{\"name\":\"Mostafa Said\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\"},\"headline\":\"O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos\",\"datePublished\":\"2023-02-21T12:42:58+00:00\",\"dateModified\":\"2023-08-22T06:39:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/\"},\"wordCount\":5748,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png\",\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/\",\"name\":\"O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png\",\"datePublished\":\"2023-02-21T12:42:58+00:00\",\"dateModified\":\"2023-08-22T06:39:48+00:00\",\"description\":\"Neste artigo, levaremos voc\u00ea em uma jornada pelas novas funcionalidades, corre\u00e7\u00f5es e m\u00e9todos e pacotes recentemente depreciados do Laravel 10.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinqsta.com\/pt\/topicos\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#website\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"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:\/\/kinqsta.com\/pt\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\",\"name\":\"Mostafa Said\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinqsta.com\/pt\/#\/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:\/\/kinqsta.com\/pt\/blog\/author\/mostafasaid\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos","description":"Neste artigo, levaremos voc\u00ea em uma jornada pelas novas funcionalidades, corre\u00e7\u00f5es e m\u00e9todos e pacotes recentemente depreciados do 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:\/\/kinqsta.com\/pt\/blog\/laravel-10\/","og_locale":"pt_PT","og_type":"article","og_title":"O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos","og_description":"Neste artigo, levaremos voc\u00ea em uma jornada pelas novas funcionalidades, corre\u00e7\u00f5es e m\u00e9todos e pacotes recentemente depreciados do Laravel 10.","og_url":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2023-02-21T12:42:58+00:00","article_modified_time":"2023-08-22T06:39:48+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png","type":"image\/png"}],"author":"Mostafa Said","twitter_card":"summary_large_image","twitter_description":"Neste artigo, levaremos voc\u00ea em uma jornada pelas novas funcionalidades, corre\u00e7\u00f5es e m\u00e9todos e pacotes recentemente depreciados do Laravel 10.","twitter_image":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png","twitter_creator":"@kinsta_pt","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Mostafa Said","Tempo estimado de leitura":"30 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/"},"author":{"name":"Mostafa Said","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996"},"headline":"O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos","datePublished":"2023-02-21T12:42:58+00:00","dateModified":"2023-08-22T06:39:48+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/"},"wordCount":5748,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png","inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/","url":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/","name":"O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos","isPartOf":{"@id":"https:\/\/kinqsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png","datePublished":"2023-02-21T12:42:58+00:00","dateModified":"2023-08-22T06:39:48+00:00","description":"Neste artigo, levaremos voc\u00ea em uma jornada pelas novas funcionalidades, corre\u00e7\u00f5es e m\u00e9todos e pacotes recentemente depreciados do Laravel 10.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#primaryimage","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/02\/laravel-10-1.png","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/pt\/blog\/laravel-10\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinqsta.com\/pt\/topicos\/laravel\/"},{"@type":"ListItem","position":3,"name":"O Que h\u00e1 de Novo no Laravel 10: Uma An\u00e1lise Detalhada das \u00daltimas Atualiza\u00e7\u00f5es e Recursos"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/pt\/#website","url":"https:\/\/kinqsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinqsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","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:\/\/kinqsta.com\/pt\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996","name":"Mostafa Said","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinqsta.com\/pt\/#\/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:\/\/kinqsta.com\/pt\/blog\/author\/mostafasaid\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/57294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/users\/266"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/comments?post=57294"}],"version-history":[{"count":13,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/57294\/revisions"}],"predecessor-version":[{"id":57760,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/posts\/57294\/revisions\/57760"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/translations\/dk"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/translations\/jp"},{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/57294\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media\/57295"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/media?parent=57294"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/tags?post=57294"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/pt\/wp-json\/wp\/v2\/topic?post=57294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}