Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Collections, uma solução?!

Collections, uma solução?!

Vídeo: https://youtu.be/JuEB6x7vnSk

Collections do Laravel seria uma “gambiarra” para o trabalho com arrays, strings, e outros dados, seja facilitado? Você sabe o que é uma Collection do Laravel? Quais benefícios ela te trás ao seus projetos Laravel, e PHP?

Gabriel Caruso

November 17, 2017
Tweet

More Decks by Gabriel Caruso

Other Decks in Programming

Transcript

  1. $totalVendas = 0; $minimoVendas = 10000; foreach ($funcionarios as $funcionario)

    { $setorFuncionario = $funcionario->setor; if ($setorFuncionario === 'Vendas') { $clientes = $funcionario->clientes; foreach ($clientes as $cliente) { $clienteTotalGasto = 0; foreach ($cliente->pedidos as $pedido) { $clienteTotalGasto += $pedido->total; } if ($clienteTotalGasto >= $minimoVendas) { $totalVendas += $clienteTotalGasto; } } } } return $totalVendas;
  2. $repositorios = []; foreach ($githubRepositorios as $repo) { $repositorios[] =

    [ 'nome' => $repo->name, 'contribuicoes' => $repo->forks + $repo->pull_requests, ]; } return $repositorios;
  3. $emailsClientes = []; foreach ($clientes as $cliente) { $email =

    $cliente->email; $emailsClientes[] = $email; } return $emailsClientes;
  4. $repositorios = []; foreach ($githubRepositorios as $repo) { $repositorios[] =

    [ 'nome' => $repo->name, 'contribuicoes' => $repo->forks + $repo->pull_requests, ]; } return $repositorios;
  5. $repositorios = []; foreach ($githubRepositorios as $repo) { $repositorio =

    [ 'nome' => $repo->name, 'contribuicoes' => $repo->forks + $repo->pull_requests, ]; $repositorios[] = $repositorio; } return $repositorios;
  6. $repositorios = []; foreach ($githubRepositorios as $repo) { $repositorio =

    [ 'nome' => $repo->name, 'contribuicoes' => $repo->forks + $repo->pull_requests, ]; $repositorios[] = $repositorio; } return $repositorios;
  7. $resultados = []; foreach ($itens as $item) { $resultado =

    [ 'nome' => $item->name, 'contribuicoes' => $item->forks + $item->pull_requests, ]; $resultados[] = $resultado; } return $resultados;
  8. $resultados = []; foreach ($itens as $item) { $resultado =

    $item->email; $resultados[] = $resultado; } return $resultados;
  9. $callback = function ($item) { return $item->email; }; $resultados =

    []; foreach ($itens as $item) { $resultado = $callback($item); $resultados[] = $resultado; } return $resultados;
  10. $resultados = []; foreach ($itens as $item) { $resultado =

    [ 'nome' => $item->name, 'contribuicoes' => $item->forks + $item->pull_requests, ]; $resultados[] = $resultado; } return $resultados;
  11. $callback = function ($item) { return [ 'nome' => $item->name,

    'contribuicoes' => $item->forks + $item->pull_requests, ]; }; $resultados = []; foreach ($itens as $item) { $resultado = $callback($item); $resultados[] = $resultado; } return $resultados;
  12. $callback = function ($item) { return [ 'nome' => $item->name,

    'contribuicoes' => $item->forks + $item->pull_requests, ]; }; $resultados = []; foreach ($itens as $item) { $resultado = $callback($item); $resultados[] = $resultado; } return $resultados;
  13. $callback = function ($item) { return $item->email; }; $resultados =

    []; foreach ($itens as $item) { $resultado = $callback($item); $resultados[] = $resultado; } return $resultados;
  14. $resultados = []; foreach ($itens as $item) { $resultado =

    $callback($item); $resultados[] = $resultado; } return $resultados; } function array_map($callback, array $itens): array {
  15. $repositorios = []; foreach ($githubRepositorios as $repo) { $repositorios[] =

    [ 'nome' => $repo->name, 'contribuicoes' => $repo->forks + $repo->pull_requests, ]; } return $repositorios;
  16. $repositorios = array_map(function ($repo) { return [ 'nome' => $repo->name,

    'contribuicoes' => $repo->forks + $repo->pull_requests, ]; }, $githubRepositorios);
  17. $repositoriosPublicos = []; foreach ($githubRepositorios as $repo) { if ($repo->isPublic())

    { $repositoriosPublicos[] = $repo; } } return $repositoriosPublicos;
  18. $repositoriosPopulares = []; foreach ($githubRepositorios as $repo) { if ($repo->stars

    >= 1000) { $repositoriosPopulares[] = $repo; } } return $repositoriosPopulares;
  19. $resultados = []; foreach ($itens as $item) { if ($item->stars

    >= 1000) { $resultados[] = $item; } } return $resultados;
  20. $repositoriosPublicos = []; foreach ($githubRepositorios as $repo) { if ($repo->isPublic())

    { $repositoriosPublicos[] = $repo; } } return $repositoriosPublicos;
  21. $resultados = []; foreach ($itens as $item) { if ($item->isPublic())

    { $resultados[] = $item; } } return $resultados;
  22. $resultados = []; foreach ($itens as $item) { if ($item->isPublic())

    { $resultados[] = $item; } } return $resultados;
  23. $resultados = []; foreach ($itens as $item) { if ($item->stars

    >= 1000) { $resultados[] = $item; } } return $resultados;
  24. $callback = function ($item) { return $item->stars >= 1000; };

    $resultados = []; foreach ($itens as $item) { if ($callback($item)) { $resultados[] = $item; } } return $resultados;
  25. $resultados = []; foreach ($itens as $item) { if ($item->isPublic())

    { $resultados[] = $item; } } return $resultados;
  26. $callback = function ($item) { return $item->isPublic(); }; $resultados =

    []; foreach ($itens as $item) { if ($callback($item)) { $resultados[] = $item; } } return $resultados;
  27. $callback = function ($item) { return $item->isPublic(); }; $resultados =

    []; foreach ($itens as $item) { if ($callback($item)) { $resultados[] = $item; } } return $resultados;
  28. $callback = function ($item) { return $item->stars >= 1000; };

    $resultados = []; foreach ($itens as $item) { if ($callback($item)) { $resultados[] = $item; } } return $resultados;
  29. $resultados = []; foreach ($itens as $item) { if ($callback($item))

    { $resultados[] = $item; } } return $resultados; function array_filter(array $itens, $callback): array { }
  30. $repositoriosPublicos = []; foreach ($githubRepositorios as $repo) { if ($repo->isPublic())

    { $repositoriosPublicos[] = $repo; } } return $repositoriosPublicos;
  31. $repositoriosPopulares = []; foreach ($githubRepositorios as $repo) { if ($repo->stars

    >= 1000) { $repositoriosPopulares[] = $repo; } } return $repositoriosPopulares;
  32. function getTIEmails($funcionarios) { $emails = []; foreach ($funcionarios as $funcionario)

    { if ($funcionario->departamento === ‘TI’) { $emails[] = $funcionario->email; } } return $emails; }
  33. function getTIEmails($funcionarios) { $emails = []; foreach ($funcionarios as $funcionario)

    { if ($funcionario->departamento === ‘TI’) { $emails[] = $funcionario->email; } } return $emails; } array_map
  34. function getTIEmails($funcionarios) { $emails = []; foreach ($funcionarios as $funcionario)

    { if ($funcionario->departamento === ‘TI’) { $emails[] = $funcionario->email; } } return $emails; } array_filter
  35. function getTIEmails($funcionarios) { $emails = []; foreach ($funcionarios as $funcionario)

    { if ($funcionario->departamento === ‘TI’) { $emails[] = $funcionario->email; } } return $emails; }
  36. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = []; foreach ($funcionarios as $funcionario) { if ($funcionario->departamento === ‘TI’) { $emails[] = $funcionario->email; } } return $emails; }
  37. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = []; foreach ($funcionarios as $funcionario) { if ($funcionario->departamento === ‘TI’) { $emails[] = $funcionario->email; } } return $emails; }
  38. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = []; foreach ($funcionarios as $funcionario) { if ($funcionario->departamento === ‘TI’) { $emails[] = $funcionario->email; } } return $emails; }
  39. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = []; foreach ($funcionariosTI as $funcionario) { if ($funcionario->departamento === ‘TI’) { $emails[] = $funcionario->email; } } return $emails; }
  40. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = []; foreach ($funcionariosTI as $funcionario) { if ($funcionario->departamento === ‘TI’) { $emails[] = $funcionario->email; } } return $emails; }
  41. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = []; foreach ($funcionariosTI as $funcionario) { $emails[] = $funcionario->email; } return $emails; }
  42. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = []; foreach ($funcionariosTI as $funcionario) { $emails[] = $funcionario->email; } return $emails; }
  43. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = []; foreach ($funcionariosTI as $funcionario) { $emails[] = $funcionario->email; } return $emails; }
  44. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = []; foreach ($funcionariosTI as $funcionario) { $emails[] = $funcionario->email; } return $emails; }
  45. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); return $emails; }
  46. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); return $emails; }
  47. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); return $emails; }
  48. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); return $emails; }
  49. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); return $emails; }
  50. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); return array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); }
  51. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); return array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); }
  52. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); return array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); }
  53. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); return array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); }
  54. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); return array_map(function ($funcionario) { return $funcionario->email; }, array_filter($funcionarios, function ($funcionario) { return $funcionario->departamento === ‘TI’; })); }
  55. function getTIEmails($funcionarios) { return array_map(function ($funcionario) { return $funcionario->email; },

    array_filter($funcionarios, function ($funcionario) { return $funcionario->departamento === ‘TI’; })); }
  56. function getTIEmails($funcionarios) { return array_map(function ($funcionario) { return $funcionario->email; },

    array_filter($funcionarios, function ($funcionario) { return $funcionario->departamento === ‘TI’; })); }
  57. # bem_vindos_a_laraconfbrasil_2017 function toCamelCase($snakeString) { return lcfirst( str_replace(' ', '',

    ucwords(str_replace('_', ' ', $snakeString)) ) ); } # bemVindosALaraconfbrasil2017
  58. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); return $emails; }
  59. function getTIEmails($funcionarios) { $funcionariosTI = array_filter($funcionarios, function ($funcionario) { return

    $funcionario->departamento === ‘TI’; }); $emails = array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); return $emails; }
  60. function getTIEmails($funcionarios) { $funcionariosTI = $funcionarios->filter(function ($funcionario) { return $funcionario->departamento

    === ‘TI’; }); $emails = array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); return $emails; }
  61. function getTIEmails($funcionarios) { $funcionariosTI = $funcionarios->filter(function ($funcionario) { return $funcionario->departamento

    === ‘TI’; }); $emails = array_map(function ($funcionario) { return $funcionario->email; }, $funcionariosTI); return $emails; }
  62. function getTIEmails($funcionarios) { $funcionariosTI = $funcionarios->filter(function ($funcionario) { return $funcionario->departamento

    === ‘TI’; }); $emails = $funcionariosTI->map(function ($funcionario) { return $funcionario->email; }); return $emails; }
  63. function getTIEmails($funcionarios) { $emails = []; foreach ($funcionarios as $funcionario)

    { if ($funcionario->departamento === ‘TI’) { $emails[] = $funcionario->email; } } return $emails; }