boxblinkracer/xpatharray

1.0.1 2018-07-16 21:05 UTC

This package is not auto-updated.

Last update: 2024-09-15 05:39:21 UTC


README

Downloads Latest stable version PHP from Packagist GitHub stars MIT licensed

为什么选择XPathArray而不是数组?

...小巧简单,但仍然强大...如果你在PHP中使用基本的数组,你对array_key_exists函数很熟悉。是的,如果你的数组有多个层级,这确实会让你的代码变得臃肿。

如果你检查现有键,你得到的是PHP Notice Error,这显然不会导致异常。

使用XPathArray,你将得到以下内容

  • 多级简单XPath选择,例如"/customer/address/street"
  • 真正的XPathKeyNotFound异常而不是PHP提示
  • 默认值用于缺失的键或值
  • ...并且代码更轻量级... :)

安装

此包使用Composer,请访问composer网站获取更多信息。

以下命令将xpatharray安装到你的项目中。它还将添加一个新的条目到你的composer.json并更新composer.lock

$ composer require boxblinkracer/xpatharray

此包遵循PSR-4约定名称为其类,这意味着你可以轻松地将xpatharray类加载集成到自己的自动加载器中。

接下来做什么?

以下是一些XPathArray对象的示例。

使用异常

在第一个示例中,我们使用XPath语法访问我们的客户数组的内容。如果找不到键,我们将得到一个XPathNotFoundException

这很完美,如果你想要同时使用和验证你的结构

<?php
//...
$customer = array(...)

# xpath array with / as our delimiter
$xCustomer = new XPathArray('/', $customer);

# object/array access with XPathNotFoundException
/** @var array @address */
$address = $xCustomer->get('/address');

# multi level access
$phoneMobile = $xCustomer->get('/contact/phone/mobile');

# type safe access with internal conversion
$street = $xCustomer->getString('/street');
$streetNumber = $xCustomer->getInt('/streetNr');
$isCompany = $xCustomer->getBool('/isCompany');
$customerRevenue = $xCustomer->getFloat('/revenue/total');

不使用异常

在下一个示例中,我们想要访问相同的键,但我们不想得到任何异常。所以我们只提供一个默认值,如果键是NULL或者根本找不到,它将被返回。

这很完美,如果你想要在数组中工作可选节点

<?php
//...
$customer = array(...)

# xpath array with / as our delimiter
$xCustomer = new XPathArray('/', $customer);

# multi level access
$phoneMobile = $xCustomer->get('/contact/phone/mobile', '-');

# type safe access with internal conversion
$street = $xCustomer->getString('/street', '-');
$streetNumber = $xCustomer->getInt('/streetNr', 0);
$isCompany = $xCustomer->getBool('/isCompany', false);
$customerRevenue = $xCustomer->getFloat('/revenue/total', 0.0);

复制/许可证

此存储库根据MIT许可证(MIT)分发。你可以在LICENSE文件中找到完整的许可文本。