boxblinkracer / xpatharray
数组XPath访问
1.0.1
2018-07-16 21:05 UTC
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^7.2
This package is not auto-updated.
Last update: 2024-09-15 05:39:21 UTC
README
为什么选择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文件中找到完整的许可文本。