Esta es una pequeña guía de como poder migrar un proyecto de Laravel 4 a Laravel 5. Esta nueva versión tiene cambios muy significativos y su migración puede ser algo tediosa. Con estos pasos que he recopilado posiblemente te ahorres más de un dolor de cabeza.
Pasos
Actualizar composer en caso que no lo tengas actualizado
composer self-update
Sigue las indicaciones de migración que hay en la documentación de laravel
http://laravel.com/docs/5.0/upgrade
Cuando hayas seguido los pasos te darás cuenta que sólo es el inicio de los problemas, pero no te precocupes, he puesto algunos puntos que te aclararán las dudas:
Los NAMESPACES.
Nueva funcionalidad son los namespaces de PHP en laravel. Esto generará conflictos con clases públicas que puedas llamar o clases que puedan ser implementos de clases bases en PHP. Para ello debes ver los ejemplos de WelcomeController.php y User.php para que te sirva de guía de como llamar los namespaces en tus archivos php.
La configuración de la base de datos.
Los datos de conexión a la base de datos están ahora en un archivo llamado .env en la raiz de todo el proyecto, no será necesario modificar el archivo config/database.php. MySQL está por defecto.
Las Clases
Por ejemplo si creo una funcion en controllers que sea implements Iterator en las primeras lineas debo colocar
uses Iterator
Si no lo haces buscará la clase Iterator dentro de Laravel (especificamente en Controllers) y dará error.
Problema con Eloquent
No he logrado que funcione las llamadas de los modelos eloquent de Laravel 4 a Laravel 5
Asi que lo he reemplazado por la llamada DB:: (query Builder)
más info http://laravel.com/docs/5.0/queries
PSR-4
Nueva forma de distribuir las carpetas en laravel
Ubicaciones importantes
Routes.php
Laravel4= app/
Laravel5= app/Http/
Carpeta Controllers
Laravel4 = app/controlers
Laravel5 =app/Http/controlers
Carpeta Views
Laravel4= app/views
Laravel5= resources/views
Carpeta Models
Laravel4= app/Models
Laravel 5: ya no existe. el modelo de ejemplo user.php está en la raiz de app.
A mi esto no me parece bien. En la documentación de Actualización dicen que nos tomemos la libertad de crear una carpeta Models en app y eso he hecho y he movido Users.php a la carpeta Models
app/Models
Pero he cambiado el namespaces de user
antes: namespace App;
ahora: namespace AppModels;
Las clases de los Modelos ya no dependen de eloquent sino de Models
laravel 4: class nombre_de_clase extends Eloquent
laravel 5: class nombre_de_clase extends Model
Blade e Iluminate
Algunas funciones de iluminate ya no estan incluidas por defecto en laravel5. Para agregar algunas funciones pasadas de Iluminate hay que hacer lo siguiente
en config/app.php
en ‘aliases’ agregar estas lineas
en ‘providers’ agregar estas lineas en el ultimo iluminate
'IlluminateHtmlHtmlServiceProvider',
en composer.json agregar lo siguiente en “require”
luego en la consola escribir:
[apache]composer update[/apache]
y luego
composer dump-autoload
Luego ir a las plantillas Blade:
reemplazar los {{HTML:: … }} por
{!!HTML:: … !!}
y
{{Form:: … }} por {!!Form:: .. !!}
Espero que sirva de ayuda!, No olvides compartir!!!
Suscríbete a nuestra Newsletter
[mc4wp_form id=”5076″] [/cl-popup]
2 comentarios. Dejar nuevo
Hola, solo quería hacer una corrección y es que en las plantillas blade el cambio sería de {{{ HTML:: …}}} por {!! HTML:: … !!} y {{{ Form:: …}}} por {!! Form:: … !!}
Saludos
Gracias Henry!