hambrook / nestr
增强PHP数组和对象的性能,并访问嵌套数据(即使在函数内部)而无需担心验证。
This package is not auto-updated.
Last update: 2024-09-14 18:58:38 UTC
README
Nestr 是一个 PHP 类,允许您轻松地获取和设置嵌套数组和对象中的值,无需担心错误或数据丢失。您无需检查键、属性或函数是否存在。它旨在优雅地失败。
需要从函数返回的数组中获取值,该函数需要一个存储在数组中的对象参数?Nestr 会为您获取它,如果所需的值不存在,则返回默认值。很简单。
您可以获取和设置嵌套值。您可以使用 foreach
迭代它们。唯一的限制是您不能 设置 函数返回的值,因为很明显。除非返回的数据是对象。
Nestr 是 Nest 的后继者。
为什么要这样做...
// need to get $array["one"]["two"] if (array_key_exists("one", $array) && array_key_exists("two", $array["one"])) { $value = $array["one"]["two"]; }
当你可以这样做?
// need to get $array["one"]["two"] $value = $array->one->two();
您无需担心任何键检查,或检查是否已设置...只需获取值。您可以为不存在的值指定默认值(默认为 null
),专注于构建出色的应用程序,而不是验证数据。
注意末尾的括号,这将触发获取原始值(可选的默认参数)而不是包装对象。
示例
$Nestr = new \Hambrook\Nestr\Nestr( [ "foo" => "bar", "one" => [ "two" => "three" ] ] );
获取顶层值
$Nestr->foo(); // note the parentheses at the end // "bar"
这次我们深入两层
$Nestr->one->two(); // "three"
如果我们尝试获取不存在的东西会发生什么?它会出错吗?
$Nestr->nope->two(); // returns `null`, not an error
或者我们可以指定自己的默认值以处理错误情况
$value = $Nestr->nope->two("safe"); // returns "safe", not an error
需要设置一个值?没问题
$Nestr->one->four = "five"; // sets value to "five" (recursively creating levels as needed)
这是为谁准备的?
Nestr 适用于处理您不确定数据的数组和对象。它与 CLI 脚本配合得很好。但可以在任何地方使用。
异常在哪里?
Nestr 不会抛出任何异常,这是规则。Nestr 被设计为使用默认值优雅地失败,而不是使用异常。
关于性能的影响?
虽然 Nestr 可以在任何地方使用,但它主要是为 CLI 应用程序构建的,在 CLI 应用程序中毫秒数并不重要。我已经考虑到速度,但它不是主要关注点。在某个时候,我将添加基准测试和计时,看看我能从执行时间中节省多少。
测试
全局安装 PHPUnit 6+,然后在 tests/
目录中运行它。
反馈
告诉我你是否喜欢它。告诉我你是否讨厌它。告诉我你是否使用了它并认为“一般”。我渴望听到您的反馈。
贡献
请随意分支此项目并提交拉取请求,或者甚至通过问题跟踪器请求功能。请使用描述性好的拉取请求,并匹配现有的代码风格。
路线图
- 添加任何其他标准文档,应该包括在内
- 也许可以添加一个参数到 get(),允许指定验证回调
- 如果您有想法,告诉我。
许可证
版权所有 © 2015 Rick Hambrook
本程序是免费软件:您可以在自由软件基金会发布的 GNU 通用公共许可证的条款下重新分发和/或修改它,无论是许可证的第 3 版,还是(根据您的选择)任何较新版本。
本程序以希望它将是有用的目的进行分发,但没有任何保证;甚至没有关于适销性或特定用途的隐含保证。有关详细信息,请参阅 GNU 通用公共许可证。
您应该已经收到了与此程序一起的GNU通用公共许可证副本。如果没有,请参阅https://gnu.ac.cn/licenses/。