comos / drapper
PHP 数据包装器
0.2.0
2016-11-23 10:52 UTC
Requires
- php: >5.5
This package is not auto-updated.
Last update: 2024-09-28 19:52:49 UTC
README
简介
防御性编程是一种好习惯,也很重要。它要求人们关注输入验证、数据类型转换和错误处理。这并不容易,有时甚至会使得程序变得庞大。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很容易集成到您的应用程序或库中:
- 使用Composer构建。
- 遵循PSR-4。
- 轻量级,没有更多依赖。
我们建议您使用Composer。这是与Drapper集成的最简单方法。
composer require comos/drapper
更多信息
请参阅 https://github.com/Comos/drapper/wiki
或者,您可以将Drapper部署到您的包含路径。然后注册一个PSR-4自动加载回调到您的应用程序中。请参阅 PHP-FIG。