Kiemelt kép

Laravel Collections #1: PHP tömbök, kicsit okosabban!

A Laravel az egyik legnépszerűbb és legtöbbet használt PHP keretrendszer napjainkban, amelyet én is több projektemben használok. Az okokról akár egy egész bejegyzést lehetne írni (és talán fogok is), de azt azért érdemes kiemelni, hogy hihetetlenül sok mindent tud, mindenféle külső könyvtár behúzása nélkül. Részben a Symfony elemeiből építkezik, de sok saját megoldás is van, mint például a Collections. Az Illuminate\Support\Collection class segítségével egy egyszerű PHP tömböt lehet felturbózni és sokkal objektum-orientáltabban használni. Hasonlóan az SPL kiterjesztésben található classokhoz.

Ebben a posztban az alapokról lesz szó: hogyan lesz tömbből Collection, a statikus metódusokról és néhány alap függvényről. 

Új Collection létrehozása 

Erre alapvetően rengeteg módszer áll rendelkezésre. Ez egyébként többnyire jellemző az egész keretrendszerre: mindent, mindenhol, mindenféle módon el lehet érni. A lehetőségek a következők: példányosítás, make metódus, collect függvény stb. 

$collection = new Collection($arr); 
$collection = collect($arr); 
$collection = Collection::make($arr); 

A tömb paraméter opcionális, alapértelmezetten egy üres Collection jön létre.  

Statikus tagfüggvények 

A make($arr)-ról már volt szó, de van egy wrap, unwrap és times függvény is. Ezekkel is tömb -> Collection konverzió hajtható végre, unwrap esetében visszafelé. 

//új Collection simán tömbből 
$coll = Collection::make($arr); 
//új Collection tömbből, vagy valami másból (Arr::wrap konvertálja át) 
$coll = Collection::wrap(“első string elem”); 
//Collection-ből tömb 
$arr = Collection::unwrap($coll); 
// új Collection egy adott számtartomány és callback függvény segítségével 
$coll = Collection::times(5, function($number) { return $number * 2; }); 
//ez ugyanaz, mintha ezt írnánk: collect([2, 4, 6, 8, 10]);

  

Collection-ből tömb 

Gyakran van arra szükség, hogy a PHP natív tömb típusával dolgozzunk, miután a Collection funkcióit kihasználva feldolgoztuk (rendezés, számolás, átalakítás, stb). Erre is van több lehetőségünk: 

$arr = $collection->all(); 
$arr = $collection->toArray(); 

Ha pedig JSON-ként lenne rá szükségünk (pl. API kérések kezelésekor), akkor a toJson() ezt is megoldja nekünk. 

Egyébként érdemes megjegyezni, hogy Laravel nagyon jól alkalmazkodik ahhoz, hogy a lehető legtöbb dolgot ne natív tömbökkel kelljen megoldani. Többek között az Eloquent lekérdezéseiből is Collection-t kapunk vissza. 

Néhány hasznos tagfüggvény 

Csak pár példát szeretnék mutatni, hogy mire is lehet használni ezt a beépített Collection class-t. Részletesebben majd egy következő posztban térnék ki rájuk. 

collect([1, 1, 2, 4])->avg(); //2 
collect([[‘x’ => 5, ‘y’ => 2], [‘x’ => 3, ‘y’ => 6]])->avg(‘x’); //4 
collect([1, 1, 2, 4])->sum(); //8 
Összefoglalás

Ennek a posztnak a célja az alapok összefoglalása, de szeretnék még több Collection-nel foglalkozó bejegyzést a blogra. A következőben részletesebben megnézzük a legfontosabb funkciókat. Kövess a blog közösségi oldalain, hogy ne maradj le. :) 


Ha nem szeretnél lemaradni a hasonló posztokról, kövesd a blog Facebook oldalát!