comos/drapper

PHP 数据包装器

0.2.0 2016-11-23 10:52 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:52:49 UTC


README

Build Status

简介

防御性编程是一种好习惯,也很重要。它要求人们关注输入验证、数据类型转换和错误处理。这并不容易,有时甚至会使得程序变得庞大。Drapper意为数据包装器。其目的是简化PHP数据访问,但增强了健壮性。以下是一些场景。

场景

从JSON文件加载数据

例如,我们有一个名为alex.json的JSON文件,如下所示。

{
"id":1,
"name":"Alex",
"gender":null
}

我们想读取文件并访问gender字段。

一个成熟的PHP开发者可能会写成这样。

$fileContents = file_get_contents('alex.json');
if (!fileContents === false) {
    //report the error
}
$data = json_decode($fileContents, true);
if (!is_array($data)) {
    //report the error
}
$gender = isset($data['gender']) ? $data['gender'] : 'private';

最终我们得到了gender,但这还不够。我们还需要测试数据类型。

if (!is_string($gender) {
    // report the error
}

......

这太复杂了。如果我们使用Drapper...

use Comos\Drapper\Loader;
$gender = Loader::fromJsonFile('alex.json')->str('gender', $defaultValue = 'private');

只需两行代码。如果你喜欢,甚至可以用全限定类名将代码压缩成一行。

在这个场景中,Drapper会检查存在性、转换数据类型并处理默认策略。如果出现超出容错协议的情况,将会抛出异常。

这只是其中一个场景。实际上,Drapper还能做更多。

直接包装数组

use Comos\Drapper\Bean;
$data = ['id'=>3, 'name'=>'alex'];
Bean::fromArray($data)->int('id');

读取带有默认值的字段

use Comos\Drapper\Bean;

$defaultValue = 0.1;
$data = ['r0' => 0.2];
$bean = Bean::fromArray($data);
$r0 = $bean->float('r0', '');

集成

由于以下原因,Drapper很容易集成到您的应用程序或库中:

  1. 使用Composer构建。
  2. 遵循PSR-4。
  3. 轻量级,没有更多依赖。

我们建议您使用Composer。这是与Drapper集成的最简单方法。

composer require comos/drapper

更多信息

请参阅 https://github.com/Comos/drapper/wiki

或者,您可以将Drapper部署到您的包含路径。然后注册一个PSR-4自动加载回调到您的应用程序中。请参阅 PHP-FIG