devuri/dot-access

一个简单的PHP库,用于使用点符号访问嵌套数据。

v0.3.1 2024-03-28 20:55 UTC

This package is auto-updated.

Last update: 2024-09-28 22:00:01 UTC


README

DotAccess类围绕Dflydev\DotAccessData\Data包的功能提供了一个用户友好的包装器,允许在PHP中使用点符号轻松访问嵌套数据。

安装

  1. 确保您已在系统上安装了Composer
  2. 运行以下命令安装包
composer require devuri/dot-access

入门

  1. DotAccess类包含到您的PHP脚本中
use Urisoft\DotAccess;
  1. 创建DotAccess类的实例,并将嵌套数据(数组或对象)传递给构造函数
$data = [
    'user' => [
        'name' => 'John Doe',
        'email' => 'john.doe@example.com',
        'address' => [
            'city' => 'New York',
            'country' => 'USA',
        ],
    ],
];

$dotdata = new DotAccess($data);

访问数据

DotAccess类提供以下方法,用于使用点符号访问嵌套数据

获取值

使用get()方法检索与点符号键关联的值

$name = $dotdata->get('user.name');
$email = $dotdata->get('user.email');
$city = $dotdata->get('user.address.city');

设置值

使用set()方法为点符号键设置值

$dotdata->set('user.age', 30);

检查键是否存在

使用has()方法检查数据中是否存在点符号键

$emailExists = $dotdata->has('user.email');

删除键

使用remove()方法取消与点符号键关联的值

$dotdata->remove('user.address.country');

示例

$data = [
    'user' => [
        'name' => 'John Doe',
        'email' => 'john.doe@example.com',
        'address' => [
            'city' => 'New York',
            'country' => 'USA',
        ],
    ],
];

$dotdata = new DotAccess($data);

$name = $dotdata->get('user.name'); // Output: "John Doe"
$dotdata->set('user.age', 30);
$emailExists = $dotdata->has('user.email'); // Output: true
$dotdata->remove('user.address.country');

echo "Name: $name\n";
echo "Age: " . $dotdata->get('user.age') . "\n";
echo "Email exists: " . ($emailExists ? 'Yes' : 'No') . "\n";

包装函数 - DataKey:get()

除了DotAccess类之外,我们还提供了一个独立的包装函数DataKey,它简化了使用点符号访问嵌套数据的过程。

用法

DataKey:get()函数允许您快速访问嵌套数据,而无需创建DotAccess类的实例。它接受三个参数

  1. 要访问的数据数组或对象。
  2. 用于访问数据的点符号键。
  3. 可选的默认值,如果键不存在则返回。

以下是使用DataKey:get()函数的示例

$data = [
    'user' => [
        'name' => 'John Doe',
        'email' => 'john.doe@example.com',
        'address' => [
            'city' => 'New York',
            'country' => 'USA',
        ],
    ],
];

// Using the wrapper function
$name = DataKey:get($data, 'user.name');
$email = DataKey:get($data, 'user.email');
$city = DataKey:get($data, 'user.address.city');
$zipCode = DataKey:get($data, 'user.address.zip_code', 'N/A'); // Provide a default value if the key doesn't exist

echo "Name: $name\n";
echo "Email: $email\n";
echo "City: $city\n";
echo "Zip Code: $zipCode\n";

何时使用DataKey:get()DotAccess的区别

DataKey:get()函数和DotAccess类都服务于相同的目的:使用点符号访问嵌套数据。选择哪一个取决于您的具体用例和编码偏好。

以下情况下使用DataKey:get()

  • 您更喜欢简单函数调用而不是创建DotAccess类的实例。
  • 您只需要在代码的几个特定点访问嵌套数据。
  • 您不需要执行多个操作(例如设置、检查或删除键)。

以下情况下使用DotAccess

  • 您需要在代码中多次操作相同的嵌套数据。
  • 您更喜欢面向对象的处理嵌套数据的方法。
  • 您需要在代码中实现更好的封装和关注点的分离。

两种方法都提供了使用点符号处理嵌套数据的便捷和用户友好的方式。选择最适合您的编码风格和需求的方法。

许可

本项目采用MIT许可 - 请参阅LICENSE文件获取详细信息。

致谢

DotAccess类是围绕Dflydev\DotAccessData\Data包的一个简单包装器,它提供了使用点符号访问嵌套数据的核心功能。特别感谢Dflydev\DotAccessData包的作者们做出的卓越工作。