popphp/pop-data

此包已废弃,不再维护。没有建议替代包。

Pop PHP 框架的 Pop Data 组件

2.1.0p1 2017-03-02 15:18 UTC

This package is auto-updated.

Last update: 2022-02-01 12:42:27 UTC


README

生命结束

pop-data 组件 v2.1.0 现已生命结束。CSV 子组件已被分叉并推送到其自己的仓库

  • popphp/pop-csv

Build Status Coverage Status

概述

pop-data 提供了一种简化的方式来转换常见的数据类型。使用它,您可以轻松地将一些原生 PHP 数据转换成常见数据类型的序列化版本,例如 CSV、JSON、SQL、XML 或 YAML。或者,相反,您可以提供一些序列化数据,它将自动检测格式并将其转换为原生 PHP 数据。

pop-dataPop PHP 框架 的一个组件。

安装

使用 Composer 安装 pop-data

composer require popphp/pop-data

基本用法

序列化数据

$phpData = [
    [
        'first_name' => 'Bob',
        'last_name'  => 'Smith'
    ],
    [
        'first_name' => 'Jane',
        'last_name'  => 'Smith'
    ]
];

$data = new Pop\Data\Data($phpData);

$csvString   = $data->serialize('csv');
$jsonString  = $data->serialize('json');
$sqlString   = $data->serialize('sql');
$xmlString   = $data->serialize('xml');
$yamlString  = $data->serialize('yaml');

$csvString 变量现在包含

first_name,last_name
Bob,Smith
Jane,Smith

$jsonString 变量现在包含

[
    {
        "first_name": "Bob",
        "last_name": "Smith"
    },
    {
        "first_name": "Jane",
        "last_name": "Smith"
    }
]

$sqlString 变量现在包含

INSERT INTO data (first_name, last_name) VALUES
('Bob', 'Smith'),
('Jane', 'Smith');

$xmlString 变量现在包含

<?xml version="1.0" encoding="utf-8"?>
<data>
  <row>
    <first_name>Bob</first_name>
    <last_name>Smith</last_name>
  </row>
  <row>
    <first_name>Jane</first_name>
    <last_name>Smith</last_name>
  </row>
</data>

$yamlString 变量现在包含

---
- first_name: Bob
  last_name: Smith
- first_name: Jane
  last_name: Smith
...

反序列化数据

您可以传递一个包含序列化数据的直接字符串或包含序列化数据字符串的文件给数据对象。它将检测是哪种类型并相应地解析。

字符串
$csv     = new Pop\Data\Data($csvString);
$phpData = $csv->unserialize();
文件
$xml     = new Pop\Data\Data('/path/to/file.xml');
$phpData = $xml->unserialize();

在数据类型之间转换

$csv = new Pop\Data\Data($csvString);
$xml = $csv->convert('xml');

写入文件

$phpData = [ ... ];

$data = new Pop\Data\Data($phpData);
$data->serialize('csv');
$data->writeToFile('/path/to/file.csv');

输出到 HTTP

$phpData = [ ... ];

$data = new Pop\Data\Data($phpData);
$data->serialize('csv');
$data->outputToHttp();
强制下载文件
$phpData = [ ... ];

$data = new Pop\Data\Data($phpData);
$data->serialize('csv');
$data->outputToHttp('my-file.csv', true);