php-brasil/collection

0.2.5 2018-06-28 16:56 UTC

This package is not auto-updated.

Last update: 2024-09-15 04:36:52 UTC


README

这是一个用于使用PHP管理集合的小型项目。

项目介绍

从很久以前开始,许多PHP扩展和模块的实现就一直在讨论。随着语言在各方面提供功能的日益融合,一些问题变得越来越明显。

PHP中数组处理的函数总是在这种讨论中占据一席之地,不可变性和使用的命名是讨论最多的点之一。

为了帮助处理数组和集合,我们推出了这个包,它可以与以下结构一起使用

打包

打包 是一个数组抽象,它具有处理不可变性和修改数组结构的方法。它有助于集中和链式修改原始数组。

提取

当处理大量数据时,有一些重要的点需要注意。PHP支持在关联数组中处理大量负载,但当数组由对象组成时,情况并非如此。

使用 提取,可以一次性从数百万行数据中恢复大量数据,使用关联数组提取,并在需要时“提取”对象实例。

如何安装

$ composer require php-brasil/collection

如何使用

导入和导出

require 'vendor/autoload.php';

use PhpBrasil\Collection\Pack;

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

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

增强PHP原生数组处理函数

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);

使用别名

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"
#     ]
# ];

使用常见数组操作来处理数组

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

与您的数据模型集成

$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