2017 © Pedro Peláez
 

library collection

image

php-brasil/collection

  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 15 Versions
  • 0 % Grown

The README.md

Collection

Pequeno projeto para gerenciar coleções usando PHP., (*1)

O Projeto

Não é de hoje que várias extensões e módulos do PHP tem sua implementação discutida. Com a crescente convergência entre o que as linguagens entregam alguns aspectos foram ficado cada vez mais evidentes., (*2)

As funções do PHP de manipulação de arrays estão sempre em algum lugar dessa discussão e a imutabilidade e a nomenclatura usadas estão entre os pontos mais discutidos., (*3)

Para ajudar a lidar com arrays e coleções apresentamos este pacote que pode ser usado com as estruturas a seguir:, (*4)

Pack

O pack é uma abstração do array que tem métodos que trabalham com imutabilidade e outros que modificam a estrutura do array. Ele é útil para centralizar e encadear mutações no array original., (*5)

Fetch

Temos pontos importantes a serem vistos quando o volume de dados gerenciados é grande. O PHP suporta cargas incríveis em arrays associativos, mas o mesmo não ocorre quando os arrays são compostos por objetos., (*6)

Usando o fetch é possível recuperar uma massa de dados de centenas de milhares de linhas usando o fetch para array associativo e "extrair" instâncias de objetos à medida que for sendo necessário., (*7)

Como instalar

$ composer require php-brasil/collection

Como usar

Importar e sair usando

require 'vendor/autoload.php';

use PhpBrasil\Collection\Pack;

$array = Pack::create([['name' => 'PHP']]);

foreach ($array as $item) {
    echo 'item ~> ', $item, ';', PHP_EOL;
}
# item ~> PHP;

Aprimorar funções nativas do PHP para manipulação de arrays

require 'vendor/autoload.php';

use PhpBrasil\Collection\Pack;

$pack = Pack::create([
  ['id' => 3, 'amount' => 60],
  ['id' => 2, 'amount' => 20],
  ['id' => 3, 'amount' => 125],
]);

$reduced = $pack->reduce(function($accumulator, $value) {
    $id = prop($value, 'id');
    $amount = prop($value, 'amount');

    if (!isset($accumulator[$id])) {
      $accumulator[$id] = [
        'id' => $id,
        'amount' => 0,
      ];
    }

    $accumulator[$id]['amount'] = $accumulator[$id]['amount'] + $amount;

    return $accumulator;
}, []);

echo stringify($reduced);

Utilizando os aliases

require '/vendor/autoload.php';

use function PhpBrasil\Collection\pack;

$array = pack([['name' => 'PHP']]);
echo 'with-pluck ~> ', $array->pluck('name'), ';', PHP_EOL;
echo 'original ~> ', $array, ';', PHP_EOL;
# [
#     "PHP"
# ];
# [
#     [
#         "name" => "PHP"
#     ]
# ];

Manipular arrays com operações comuns de arrays

echo Pack::create(['A', '', 'C'])->filter();
# [
#   0 => "A",
#   2 => "C"
# ];

Integrar com seu modelo de dados

$statement = $pdo->prepare("SELECT id, name FROM users WHERE name = ?");
$statement->execute([get('name')]);
$users = Fetch::create($statement->fetchAll(PDO::FETCH_ASSOC), User::class);

$first = $users->current();
echo get_class($first);
echo $first->id;
# User
# 1

The Versions

08/07 2018

dev-master

9999999-dev

  Sources   Download

MIT

The Requires

  • php >=5.6
  • ext-json *

 

The Development Requires

28/06 2018

0.2.5

0.2.5.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

27/06 2018

0.2.4

0.2.4.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

27/06 2018

0.2.3

0.2.3.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

27/06 2018

0.2.2

0.2.2.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

26/06 2018

0.2.1

0.2.1.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

26/06 2018

0.2.0

0.2.0.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

26/06 2018

0.1.10

0.1.10.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

26/06 2018

0.1.9

0.1.9.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

26/06 2018

0.1.8

0.1.8.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

26/06 2018

0.1.7

0.1.7.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

26/06 2018

0.1.6

0.1.6.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

25/06 2018

0.1.3

0.1.3.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

25/06 2018

0.1.2

0.1.2.0

  Sources   Download

MIT

The Requires

  • php >=5.6

 

25/06 2018

0.1.1

0.1.1.0

  Sources   Download

MIT

The Requires

  • php >=5.6