hambrook / nestr

增强PHP数组和对象的性能,并访问嵌套数据(即使在函数内部)而无需担心验证。

v1.1.1 2017-05-06 09:12 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:58:38 UTC


README

Build Status

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/