Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Laravel: gestire le collezioni in maniera performante

Laravel 5.7.13 introduce alcune novità nella gestione delle collezioni.
Laravel: gestire le collezioni in maniera performante
Laravel 5.7.13 introduce alcune novità nella gestione delle collezioni.
Link copiato negli appunti

Lo scorso mercoledi è stata rilasciata la versione 5.7.13 del framework PHP Laravel, che ha portato con se alcune interessanti novità nella gestione delle collezioni ed ha aggiunto la possibilità di restituire un array di stringhe nelle regole di validazione personalizzate.

Le collezioni, in particolare, sono un componente di Laravel molto apprezzato dagli sviluppatori, perché permettono di lavorare con gli array di dati in una maniera fluida e performante, fungendo da wrapper consistente per questi ultimi. Nell'esempio seguente si può osservare questo componente in azione:

$collection = collect(['taylor', 'abigail', null])->map(function ($name) {
    return strtoupper($name);
})
->reject(function ($name) {
    return empty($name);
});

L'helper collect produce una nuova istanza di una collezione a partire da un array, viene richiamato il metodo strtoupper su ogni singolo elemento della collezione ed infine vengono rimossi tutti gli elementi vuoti grazie al metodo reject ed al callback che gli viene fornito (che in questo caso restituisce true per ogni elemento vuoto).

Nel primo contesto (namespace Illuminate\Support\Collection) è stata introdotta la possibilità di controllare la mancata presenza di elementi in una collezione e gestirla attraverso i nuovi metodi whenEmptywhenNotEmptyunlessEmpty e unlessNotEmpty.

Nel seguente snippet, il metodo whenEmpty della classe Collection chiamerà dunque una funzione anonima che funge da callback in caso di collezione vuota:

<?php
use Illuminate\Support\Collection;
$collection = new Collection;
$collection->whenEmpty(function ($collection) {
    return $collection->push('somevalue');
});
$this->assertSame(['somevalue'], $collection->toArray());

I metodi di Collection che utilizzano unless come prefisso funzionano in maniera opposta: il callback verrà richiamato fino a quando la collezione non è vuota nel primo caso:

<?php
use Illuminate\Support\Collection;
$collection = new Collection;
$collection->unlessEmpty(function ($collection) {
    return $collection->push('somevalue');
});
$this->assertSame([], $collection->toArray());

e al contrario nel secondo caso:

<?php
use Illuminate\Support\Collection;
$collection = new Collection;
$collection->unlessNotEmpty(function ($collection) {
    return $collection->push('somevalue');
});
$this->assertSame([], $collection->toArray());

La seconda novità di punta di questa release riguarda la possibilità di aggiungere un array di messaggi per gestire le regole di validazione personalizzate/custom, che può essere direttamente restituito nella regola impostata da noi:

public function message()
{
    return [
        ':attribute must be an e-mail',
        ':attribute must be a first name'
    ];
}

Ti consigliamo anche