gamringer / php-json-pointer
PHP JSON Pointer (RFC6901) 实现
3.2
2017-02-06 14:42 UTC
Requires
- php: >=7.0
Requires (Dev)
- pdepend/pdepend: @stable
- phpmd/phpmd: @stable
- phpunit/phpunit: @stable
- sebastian/phpcpd: @stable
- squizlabs/php_codesniffer: @stable
README
一个符合RFC6901的JSON Pointer PHP实现
#许可证 JSONPointer遵循MIT许可证。
#安装
composer require gamringer/php-json-pointer
##测试
composer install
phpunit
#文档
##测试值的存活性
<?php $target = [ "foo" => ["bar", "baz"], "qux" => "quux" ]; $pointer = new \gamringer\JSONPointer\Pointer($target); var_dump($pointer->has("/foo")); /* Results: bool(true) */
检索不存在的值将返回false
<?php $target = [ "qux" => "quux" ]; $pointer = new \gamringer\JSONPointer\Pointer($target); var_dump($pointer->has("/foo")); /* Results: bool(false) */
##检索值
<?php $target = [ "foo" => ["bar", "baz"], "qux" => "quux" ]; $pointer = new \gamringer\JSONPointer\Pointer($target); var_dump($pointer->get("/foo")); /* Results: array(2) { [0] => string(3) "bar" [1] => string(3) "baz" } */
检索不存在的值将抛出异常
<?php $target = [ "qux" => "quux" ]; $pointer = new \gamringer\JSONPointer\Pointer($target); var_dump($pointer->get("/foo")); /* Results: Throws gamringer\JSONPointer\Exception */
##插入值
<?php $target = [ "foo" => ["bar", "baz"], "qux" => "quux" ]; $pointer = new \gamringer\JSONPointer\Pointer($target); $value = "waldo"; var_dump($pointer->insert("/foo/1", $value)); var_dump($pointer->get("/foo")); /* Results: class gamringer\JSONPointer\VoidValue#6 (2) { protected $owner => array(3) { ... } protected $target => string(1) "1" } array(3) { [0] => string(3) "bar" [1] => string(5) "waldo" [2] => string(3) "baz" } */
如果用于索引数组,插入值将返回一个VoidValue对象。
<?php $target = [ "foo" => ["bar", "baz"], "qux" => "quux" ]; $pointer = new \gamringer\JSONPointer\Pointer($target); $value = "waldo"; var_dump($pointer->insert("/foo", $value)); var_dump($pointer->get("/foo")); /* Results: array(2) { [0] => string(3) "bar" [1] => string(3) "baz" } string(5) "waldo" */
如果用于其他任何东西,它将以与get()完全相同的方式表现
<?php $target = [ "foo" => ["bar", "waldo", "baz"], "qux" => "quux" ]; $pointer = new \gamringer\JSONPointer\Pointer($target); $value = "corge"; var_dump($pointer->set("/foo", $value)); /* Results: array(3) { [0] => string(3) "bar" [1] => string(5) "waldo" [2] => string(3) "baz" } */
##设置值
<?php $target = [ "foo" => ["bar", "waldo", "baz"], "qux" => "quux" ]; $pointer = new \gamringer\JSONPointer\Pointer($target); $value = "garply"; var_dump($pointer->set("/grault", $value)); /* Results: class gamringer\JSONPointer\VoidValue#6 (2) { protected $owner => array(3) { ... } protected $target => string(6) "grault" } */
设置值返回该路径之前的内容
<?php $target = [ "foo" => ["bar", "waldo", "baz"], "qux" => "quux" ]; $pointer = new \gamringer\JSONPointer\Pointer($target); var_dump($pointer->remove("/qux")); /* Results: string(4) "quux" */
如果路径可达但未设置,将返回一个VoidValue
<?php $target = [ "foo" => ["bar", "waldo", "baz"], ]; $pointer = new \gamringer\JSONPointer\Pointer($target); var_dump($pointer->remove("/qux")); /* Results: Throws gamringer\JSONPointer\Exception */
##移除值
<?php $target = [ "foo" => ["bar", "waldo", "baz"], "qux" => "quux" ]; $pointer = new \gamringer\JSONPointer\Pointer($target); $pointer->remove("/qux"); var_dump($target); /* Results: array(1) { 'foo' => array(3) { [0] => string(3) "bar" [1] => string(5) "waldo" [2] => string(3) "baz" } } */
移除值将返回该路径之前的内容
<?php $target = [ "foo" => ["bar", "waldo", "baz"], "qux" => "quux" ]; $value = "bar"; $pointer = new \gamringer\JSONPointer\Pointer($target); $pointer->set("/foo", $value); var_dump($target); /* Results: array(2) { 'foo' => string(3) "bar" 'qux' => string(4) "quux" } */