Cómo actualizar una aplicación a Laravel 8


La llegada de Laravel 8 trajo consigo muchas novedades. Desde cambios en los Factories hasta mejoras de rendimiento con Jetstream. Ahora, la pregunta que nos hacemos todos: ¿Se puede actualizar un proyecto de Laravel versiones anteriores sin fallar en el intento?

Comencemos con el paso a paso para llevar esta actualización con éxito:

PASO 1:

Antes de pasar a Laravel 8, te recomendamos actualizar el Composer y así asegurarte que tu entorno Backend esté también actualizado:


PASO 2:

En nuestro archivo composer.json vamos a reemplazar las siguientes dependencias en las propiedades del "require" y del "require-dev":

"require": {
        "php": "^7.3|^8.0",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^8.0",
        "laravel/tinker": "^2.0",
        "yajra/laravel-datatables-oracle": "^9.7",
        "laravel/ui": "^3.0"
 },
"require-dev": {
        "guzzlehttp/guzzle":"^7.0.1",
        "facade/ignition": "^2.3.6",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^5.0",
        "phpunit/phpunit": "^9.0",
        "illuminate/support": "^8.6"
 },


PASO 3: 

Los siguientes cambios que vienen a continuación hay que hacerlos porque a partir de Laravel 7, la versión de Symfony cambió a la número 5, por lo tanto hay varios archivos que desde la versión Laravel 6 quedaron con líneas de código obsoletas.

Los métodos report y render de la clase App\Exceptions\Handler de tu aplicación deben aceptar instancias de la interfaz Throwable en lugar de instancias Exception:

use Throwable;

public function report(Throwable $exception);
public function render($request, Throwable $exception);

Luego, debes actualizar la opción secure de tu archivo de configuración config/session.php para que tenga un valor por defecto de null y la opción same_site para que tenga un valor por defecto de lax:

'secure' => env('SESSION_SECURE_COOKIE', null),
'same_site' => 'lax',

Luego, debes buscar los siguientes archivos:

  • laravel/framework/src/Illuminate/Container/Container.php
  • laravel/framework/src/Illuminate/Container/BoundMethod.php

Allí modificar la clase getClass() por getType() y luego reemplazar el método ->name por ->getName()

Finalmente dirigirte al archivo:

  • vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php

Allí reemplazar la línea:

$packages = json_decode($this->files->get($path), true);

Por:

$installed = json_decode($this->files->get($path), true);
$packages = $installed['packages'] ?? $installed;


PASO 4: 

En este paso ya podemos ejecutar Composer Update para actualizar tus paquetes y php artisan --version para comprobar que tienes instalada la versión 8 del framework.


PASO 5:

Y para terminar, Laravel 8 viene con algunos cambios importantes, sin embargo, si deseas continuar utilizando la sintaxis de la versión anterior del framework, instala el paquete laravel/legacy-factories mediante Composer:

composer require laravel/legacy-factories

Si deseas ver esta explicación en video te invito a que visites el canal de YouTube de Tutoriales a tu Alcance dando clic en el botón de reproducción:


Más artículos relacionados

¿Qué tal te pareció el artículo?

Válido.
Por favor llena este campo correctamente.
Válido.
Por favor llena este campo correctamente.
Válido.
Por favor llena este campo correctamente.
Comparte este artículo

Usamos cookies para brindar nuestros servicios. Al utilizar este sitio web, acepta esto. Conoce nuestras políticas de Cookies