Todos los artículos

Un nuevo helper de cadenas, Enums en AssertableJson, y más en Laravel 11.20

Julian Beaujardin
Julian Beaujardin Reference: Laravel News August 9th, 2024

El equipo de Laravel lanzó la versión v11.20 esta semana, incluyendo un nuevo método de colección, un método para desduplicar cadenas, la capacidad de usar Enums con AssertableJson, y más.

Añadir collapseWithKeys a Collection

Jason McCreary contribuyó con un método collapseWithKeys() a la clase Illuminate\Support\Collection que colapsa matrices anidadas mientras preserva sus claves:

$c = collect([[1 => 'a'], [3 => 'c'], [2 => 'b']]);
$c->collapseWithKeys();
/*
[
    1 => "a",
    3 => "c",
    2 => "b",
]
*/

Añadir desduplicado a las cadenas

Jason McCreary contribuyó con un helper de desduplicado de cadenas que reemplaza las ocurrencias consecutivas de un carácter con un solo carácter:

Str::deduplicate('random  double  spaces'); // 'random double spaces'
Str::deduplicate('/some//odd/path//', '/'); // '/some/odd/path/'
(string) str('zondaaaa')->deduplicate('a'); // 'zonda'

Permitir ruta de vista personalizada al crear componentes

Andrew Brown contribuyó con la capacidad de definir una bandera --path cuando necesites crear la ruta de la vista en una ubicación de archivo personalizada:

php artisan make:component Foo --path custom/path

Por defecto, el comando make:component seguirá utilizando la carpeta resources/views/components.

Introducir una clase de excepción MixFileNotFoundException

Ihor Vereshchynskyi contribuyó con una nueva clase MixFileNotFoundException para manejar archivos Mix faltantes. Esta excepción proporciona un mecanismo de manejo de errores más preciso cuando se lanza esta excepción.

Permitir que los enums se pasen a los métodos where de AssertableJson

Patrick O'Meara contribuyó con la capacidad de usar Enums mientras se utilizan los métodos where* con instancias de AssertableJson:

// Antes
fn (AssertableJson $json) => $json->where('role', UserRole::Developer->value)

// Después
fn (AssertableJson $json) => $json->where('role', UserRole::Developer)

Solicitar la creación de una plantilla de Markdown al hacer notificaciones

Christoph Rumpel actualizó el comando make:notification para solicitar la creación de una vista de markdown opcional cuando no se proporciona ninguna entrada inicial:

php artisan make:notification

Añadir métodos stackContains() y hiddenStackContains() a Context Stacks

@lessevv contribuyó con la capacidad de verificar si un valor (o valor oculto) está contenido en una pila de contexto. Aquí hay algunos ejemplos del Pull Request #52346:

// Normal
Context::push('foo', 'bar', 'lorem');

Context::stackContains('foo', 'bar'); // true
Context::stackContains('foo', 'lorem'); // true
Context::stackContains('foo', 'doesNotExist'); // false

// Oculto
Context::pushHidden('foo', 'bar', 'lorem');

Context::hiddenStackContains('foo', 'bar'); // true
Context::hiddenStackContains('foo', 'lorem'); // true
Context::hiddenStackContains('foo', 'doesNotExist'); // false

Métodos de aserción inversos para la cola falsa

Günther Debrauwer contribuyó con las aserciones assertNotDeleted, assertNotFailed, y assertNotReleased a la cola que puedes usar para afirmar lo inverso de estos métodos:

use App\Jobs\ProcessPodcast;

$job = (new ProcessPodcast)->withFakeQueueInteractions();

$job->handle();

$job->assertNotDeleted();
$job->assertNotFailed();
$job->assertNotReleased();

Hacer público el método Facade::isFake()

Caleb White contribuyó con una actualización al método isFake(), haciendo que la visibilidad sea pública:

use Illuminate\Support\Facades\Bus;

Bus::isFake(); // false
Bus::fake();
Bus::isFake(); // true

Notas de la versión

Puedes ver la lista completa de nuevas características y actualizaciones a continuación y la diferencia entre 11.19.0 y 11.20.0 en GitHub. Las siguientes notas de la versión son directamente del changelog.