Un nuevo helper de cadenas, Enums en AssertableJson, y más en Laravel 11.20
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.