Mantén un formato de código consistente para tus aplicaciones y componentes con EditorConfig

Componentes para Laravel

EditorConfig nos ayuda a mantener un estilo de código consistente para un mismo proyecto sin importar si estamos trabajando con varios desarrolladores, utilizando múltiples IDEs o programando en diferentes sistemas operativos. En esta lección agregaré el archivo de configuración .editorconfig al componente y te enseñaré cómo funciona esta herramienta.

Regístrate para ver ésta y cientos de lecciones exclusivas.

Arreglando el estilo de nuestro código automáticamente con GitHub Actions y PHP-CS-Fixer

Componentes para Laravel

En esta tercera parte de Ejecutando pruebas automáticamente con GitHub Actions, vamos a agregar un Workflow adicional para arreglar el estilo del código automáticamente utilizando una configuración personalizada con el componente PHP-CS-Fixer.

Regístrate para ver ésta y cientos de lecciones exclusivas.

Uso de GitHub Actions para ejecutar pruebas con diferentes versiones de PHP y sistemas operativos

Componentes para Laravel

En esta segunda parte de Ejecutando pruebas automáticamente con GitHub Actions, vamos a modificar nuestro Workflow de GitHub Actions para ejecutar las pruebas de PHPUnit utilizando múltiples versiones de PHP, dependencias con diferentes versiones y dos sistemas operativos: Ubuntu y Windows.

Regístrate para ver ésta y cientos de lecciones exclusivas.

Ejecutando pruebas automáticamente con GitHub Actions

Componentes para Laravel

En esta lección del curso de Creación de componentes para Laravel aprenderás cómo utilizar GitHub Actions para que las pruebas de tus componentes y aplicaciones se ejecuten automáticamente cada vez que se realice un commit o que alguien colabore con un pull request a tu repositorio.

Regístrate para ver ésta y cientos de lecciones exclusivas.

Guía de contribución – Documentación de Laravel 6

Reportes de errores

Para fomentar la colaboración activa, Laravel alenta fuertemente el uso de pull requests, no solo reportes de errores. «Los reportes de errores» pueden además ser enviados en el formulario de un pull request que contenga un test fallido.

Sin embargo, si tu archivo reportar un error, tu issue debería contener un título y una clara descripción del problema. Deberías además incluir tanta información relevante como sea posible y un ejemplo de código que demuestre el problema. La meta de un reporte de error es hacerlo fácil para ti mismo – y para otros – para replicar el error y desarrollar una solución.

Recuerda, los reportes de errores son creados con la esperanza de que otros con el mismo problema puedan colaborar contigo en la solución. No esperes que automáticamente el reporte del error recibirá alguna actividad o que los otros saltarán a repararlo. Crear un reporte de error sirve para ayudarte a ti mismo y a otros a iniciar el camino de reparar el problema.

El código fuente de Laravel es manejado en GitHub, y allí están los repositorios para cada uno de los proyectos de Laravel:

importante sobre la traducción
Los reportes sobre errores o detalles encontrados en esta traducción deben ser realizados en el repositorio oficial de la traducción.

Discusión sobre el desarrollo del núcleo

Tu puedes proponer nuevas funcionalidades o mejoras del comportamiento existente de Laravel en el tablero de ideas de ideas de Laravel. Si propones una nueva funcionalidad, esté dispuesto a implementar al menos parte del código que se necesitaría para completar la funcionalidad.

Discusiones informales sobre errores, nuevas funcionalidades e implementación de existentes funcionalidades toman lugar en el canal #internals del Servidor Discord de Laravel. Taylor Otwell, el encargado de Laravel, está normalmente presente en el canal los días de semana de 8:00am-5:00pm (UTC-06:00 o América/Chicago) y esporádicamente está presente en el canal a otras horas.

¿Cuál rama?

Todas las correcciones de errores deben ser enviadas a la última rama estable o a la actual rama LTS. Las correcciones de errores nunca deben ser enviadas a la rama master a menos que ellos reparen funcionalidades que existan solo en los próximos lanzamientos.

Funcionalidades menores que son totalmente compatible con la versión actual de Laravel pueden enviarse a la última rama estable.

Las nuevas funcionalidades mayores deben siempre ser enviadas a la rama master, la cual contiene el próximo lanzamiento de Laravel.

Si no estás seguro si tu funcionalidad califica como mayor o menor, por favor pregúntale a Taylor Otwell en el canal #internals del servidor Discord de Laravel.

Recursos compilados

Si estás enviando un cambio que afectará un archivo compilado, tal como muchos de los archivos en resources/sass o resources/js del repositorio laravel/laravel, no hagas commit de los archivos compilados. Debido a su gran tamaño, ellos no pueden realistamente ser revisado por el encargado. Esto podría ser usado como una forma de inyectar código malicioso dentro de Laravel. Para evitar esto de manera defensiva, todos los archivos compilados serán generados y confirmados por los mantenedores de Laravel.

Vulnerabilidades de seguridad

Si tu descubres una vulnerabilidad de seguridad dentro de Laravel, por favor envía un email a Taylor Otwell a [email protected]. Todas las vulnerabilidades de seguridad serán tratadas con prontitud.

Estilo de código

Laravel sigue el estándar de código PSR-2 y el estándar de auto carga PSR-4.

Ver post

Guía de Actualización – Documentación de Laravel 6

Cambios de alto impacto

Cambios de mediano impacto

Actualizando a 6.0 desde 5.8

Tiempo de actualización estimado: una hora

Intentamos documentar cada posible cambio de ruptura (breaking change). Dado que algunos de estos cambios de ruptura se encuentran en las partes oscuras del framework, solo una parte de estos cambios puede afectar tu aplicación.

Ver post

Notas de Lanzamiento – Documentación de Laravel 6

Esquema de versiones

Laravel y sus otros paquetes de primeros (paquetes desarrollados por una propia compañía) siguen el versionamiento semántico. Los principales lanzamientos del framework son realizados cada seis meses (Febrero y Agosto), mientras que los menores y los parches pueden ser realizados tan frecuente como cada semana. Los lanzamientos de versiones menores y los parches nunca deberían contener cambios que causen que otros componentes fallen (breaking changes).

Cuando haces referencia al framework Laravel o sus componentes desde tu aplicación o paquete, debes utilizar siempre una restricción de versión como ^6.0, ya que las versiones mayores de Laravel incluyen "breaking changes". Sin embargo, nos esforzamos por asegurarnos siempre de que puedas actualizar a una nueva versión mayor en un día o menos.

Política de soporte

Para las versiones LTS, como Laravel 6, se proporcionan correcciones de errores durante 2 años y correcciones de seguridad por 3 años. Estas versiones proporcionan la ventana más larga de soporte y mantenimiento. Para las versiones generales, las correcciones de errores se proporcionan durante 6 meses y las correcciones de seguridad durante 1 año. Para todas las librerías adicionales, incluyendo Lumen, solo la última versión recibe correcciones de error. Adicionalmente, por favor revisa las versiones de bases de datos soportadas por Laravel.

Versión Lanzamiento Corrección de errores hasta Correcciones de seguridad hasta
5.5 (LTS) 30 de Agosto, 2017 30 de Agosto, 2019 30 de Agosto, 2020
5.6 7 de Febrero, 2018 7 de Agosto, 2018 7 de Febrero, 2019
5.7 4 de Septiembre, 2018 4 de Marzo, 2019 4 de Septiembre, 2019
5.8 26 de Febrero, 2019 26 de Agosto, 2019 26 de Febrero, 2020
6 (LTS) 3 de Septiembre, 2019 3 de Septiembre, 2021 3 de Septiembre, 2022

Laravel 6

Laravel 6 (LTS) continúa las mejoras hechas en Laravel 5.8 con la introducción del versionamiento semántico, la compatibilidad con Laravel Vapor, las respuestas de autorización mejoradas, el middleware job o de trabajos, las colecciones lazy o diferidas, las mejoras de subquery o subconsulta, la extracción de la estructura de frontend al paquete de Composer laravel/ui, y una variedad de correcciones de error y mejoras de usabilidad.

Ver post

Laravel Telescope – Documentación de Laravel 6

Introducción

Telescope de Laravel es un elegante asistente para depurar código para el framework de Laravel. Telescope proporciona información detallada de las solicitudes entrantes de tu aplicación, excepciones, entradas de log, consultas de bases de datos, trabajos en cola, correos, notificaciones, operaciones de caché, tareas programadas, valores de variables y mucho más. Telescope acompaña maravillosamente tu entorno de desarrollo de Laravel.

Instalación

Puedes usar Composer para instalar Telescope dentro de tu proyecto de Laravel:

composer require laravel/telescope

Después de instalar Telescope, publica sus recursos usando el comando Artisan telescope:install. Después de instalar Telescope, también deberías ejecutar el comando migrate:

php artisan telescope:install

php artisan migrate

Actualizando Telescope

Si haces una actualización de Telescope, deberías volver a publicar los recursos de Telescope:

php artisan telescope:publish

Ver post

Laravel Socialite – Documentación de Laravel 6

Introducción

Además de la típica autenticación basada en formularios, Laravel también proporciona una sencilla y conveniente forma de autenticar con proveedores OAuth usando Laravel Socialite. Actualmente Socialite soporta autenticación con Facebook, Twitter, LinkedIn, Google, Github, GitLab y Bitbucket.

Los adaptadores para otras plataformas son listados en el sitio web de Proveedores de Socialite manejado por la comunidad.

Actualizando Socialite

Al actualizar a una nueva versión mayor de Socialite, es importante que revises cuidadosamente la guía de actualización.

Instalación

Para empezar con Socialite, usa Composer para agregar el paquete a las dependencias de tu proyecto:

composer require laravel/socialite

Configuración

Antes de usar Socialite, también necesitarás agregar las credenciales para los servicios OAuth que tu aplicación utiliza. Estas credenciales deberían estar colocadas en tu archivo de configuración config/services.php, y debería usar la clave facebook, twitter, linkedin, google, github, gitlab o bitbucket dependiendo del proveedor que tu aplicación requiera. Por ejemplo:

'github' => [
    'client_id' => env('GITHUB_CLIENT_ID'),
    'client_secret' => env('GITHUB_CLIENT_SECRET'),
    'redirect' => 'http://your-callback-url',
],

Si la opción redirect contiene una ruta relativa, será resuelta automáticamente a una URL completamente calificada.

Enrutamiento

A continuación, ¡estás listo para autenticar usuarios! Necesitarás dos rutas: una para redireccionar el usuario al proveedor OAuth y otra para recibir la función de retorno del proveedor después de la autenticación. Accederemos a Socialite usando la clase facade Socialite:

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Socialite;

class LoginController extends Controller
{
    /**
    * Redirect the user to the GitHub authentication page.
    *
    * @return \Illuminate\Http\Response
    */
    public function redirectToProvider()
    {
        return Socialite::driver('github')->redirect();
    }

    /**
    * Obtain the user information from GitHub.
    *
    * @return \Illuminate\Http\Response
    */
    public function handleProviderCallback()
    {
        $user = Socialite::driver('github')->user();

        // $user->token;
    }
}

El método redirect se toma la tarea de enviar el usuario al proveedor OAuth, mientras que el método user leerá la solicitud entrante y obtendrá la información del usuario desde el proveedor.

Necesitarás definir las rutas para tus métodos de controlador:

Route::get('login/github', 'Auth\LoginController@redirectToProvider');
Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');

Parámetros opcionales

Un número de proveedores OAuth soportan parámetros opcionales en la solicitud de redirección. Para incluir algunos de los parámetros opcionales en la solicitud, llama el método with con un arreglo asociativo:

return Socialite::driver('google')
    ->with(['hd' => 'example.com'])
    ->redirect();

Al momento de usar el método with, procura no pasar algunas palabras reservadas tales como state or response_type.

Alcances de acceso

Antes de redirecionar al usuario, también puedes agregar «alcances (scopes)» adicionales en la solicitud usando el método scopes. Este método mezclará todos los alcances existentes con los que suministras:

return Socialite::driver('github')
    ->scopes(['read:user', 'public_repo'])
    ->redirect();

Puedes sobrescribir todos los alcances existentes usando el método setScopes:

return Socialite::driver('github')
    ->setScopes(['read:user', 'public_repo'])
    ->redirect();

Autenticación sin estado

El método stateless puede ser usado para deshabilitar la verificación de estado de sesión. Esto es útil al momento de agregar la autenticación de una red social a una API.

return Socialite::driver('google')->stateless()->user();

La autenticación sin estado no está disponible para el controlador de Twitter, que usa OAuth 1.0 para la autenticación.

Obteniendo detalles de usuario

Una vez que tengas una instancia de usuario, puedes obtener algunos detalles más sobre el usuario:

$user = Socialite::driver('github')->user();

// OAuth Two Providers
$token = $user->token;
$refreshToken = $user->refreshToken; // not always provided
$expiresIn = $user->expiresIn;

// OAuth One Providers
$token = $user->token;
$tokenSecret = $user->tokenSecret;

// All Providers
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();

Obteniendo los detalles de usuario desde un token (OAuth2)

Si ya tienes un token de acceso válido de un usuario, puedes obtener sus detalles usando el método userFromToken:

$user = Socialite::driver('github')->userFromToken($token);

Obteniendo los detalles de usuario desde un token y secreto (OAuth1)

Si ya tienes un par válido de token / secreto de un usuario, puedes obtener sus detalles usando el método userFromTokenAndSecret:

$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Suscríbete a nuestro boletín

Recibe consejos útiles, promos y múltiples recursos directamente en tu correo.

Tu nombre y correo serán enviados directamente a MailChimp. No compartiremos tus datos con otras empresas.