aklump/loft_data_grids

PHP 类,允许在网格结构中放置数据并以各种数据格式导出。

0.7.1 2024-09-05 20:33 UTC

README

Packagist link

此项目将不会添加新功能。我建议使用 Symfony Serializer 组件 来替代类似功能。项目将不会获得持续的支持。

摘要

此包是 PHP 面向对象解决方案,用于在二维(行 + 列)或三维(行 + 列 + 页面)中建模数据。它可以被视为像电子表格一样。

它允许使用单个数据类 ExportData 将数据组织到网格中,具有各种输出样式 Exporter,以便您可以轻松地获取 .csv 文件或 .xlsx 文件等。

请参阅代码以获取更多文档。

使用 Composer 安装

  1. 需要此包

    composer require aklump/loft_data_grids:^0.7
    

使用方法

让我们构建一个双层数据网格。(层称为 页面。)第一页将包含三个人的姓名和年龄。第二页将包含车辆信息。它可以被想象成两个表格

页面 0

页面 1

代码中

$data_grid = new \AKlump\LoftDataGrids\ExportData();

// By default we're on page 0, row 0.
$data_grid->add('Name', 'Adam')->add('Age', 39)->next();
$data_grid->add('Name', 'Brandon')->add('Age', 37)->next();
$data_grid->add('Name', 'Charlie')->add('Age', 7)->next();

// Switch to page 1; we'll be placed on row 0.
$data_grid->setPage(1);
$data_grid->add('Color', 'Black')->add('Make', 'Honda')->next();
$data_grid->add('Color', 'White')->add('Make', 'BMW')->next();

从对象访问数据

指针 视为表格中的一行。

$value = $data_grid->setPage(0)->setPointer(0)->getValue('Name') // $value === 'Adam'
$value = $data_grid->getValue('Name') // $value === 'Adam'
$value = $data_grid->setPointer(2)->getValue('Name') // $value === 'Charlie'
$value = $data_grid->setPointer(0)->get() // $value === array('Name' => 'Adam', 'Age' => 39)
$value = $data_grid->setPage(1)->setPointer(1)->getValue('Color') // $value === 'White'

将数据导出为其他格式

我们可以这样以 CSV 格式导出两个页面

$exporter = new \AKlump\LoftDataGrids\CSVExporter($data_grid);

$csv_string = $exporter->export();
// "Name","Age"
// "Adam","39"
// "Brandon","37"
// "Charlie","7"

$csv_string = $exporter->export(1);
// "Color","Make"
// "Black","Honda"
// "White","BMW"

或获取 JSON 格式...

$exporter = new \AKlump\LoftDataGrids\JSONExporter($data_grid);
$json_string = $exporter->export();

(此格式已调整以便于阅读;实际的 JSON 是压缩的。)

[
  [
    {
      "Name": "Adam",
      "Age": 39
    },
    {
      "Name": "Brandon",
      "Age": 37
    },
    {
      "Name": "Charlie",
      "Age": 7
    }
  ],
  [
    {
      "Color": "Black",
      "Make": "Honda"
    },
    {
      "Color": "White",
      "Make": "BMW"
    }
  ]
]

或任何其他导出类。

保存到文件

$exporter = new \AKlump\LoftDataGrids\XLSXExporter($data_grid, 'users');
$exporter->saveFile();

导出器:对象作为值

  • 如果导出器实现了 objectHandler 方法,则导出器可以处理对象。
  • 如果导出器设置了 'dateFormat' 的值,则可以处理 \DateTime 对象。

测试

  1. 使用 ./bin/run_unit_tests.sh 运行 PhpUnit 测试