graste / params
数组包装器,简化值检索。具有参数、选项和设置以及用于包含在其他库中的特性。
Requires
- php: ^7.0
- mtdowling/jmespath.php: ^1.1 || ^2.4
Requires (Dev)
- phpunit/phpunit: ^5.7
- squizlabs/php_codesniffer: ^3.3
README
目的
数组包装器对象,简化值检索。它提供了一个 get
方法,如果给定的键不存在,则返回默认值。除了作为普通数组的用法以及各种 get
、set
、has
等方法外,参数定义了一个 getValues($expression)
方法,允许通过提供更复杂或更简单的表达式来检索值。您可以使用一个调用轻松从嵌套数组中检索值,或从不同嵌套级别获取多个值。它还提供了用于方便创建可配置类的特性。
需求和安装
- PHP ^7.0
通过 Composer 安装库
./composer.phar require graste/params [可选版本]
将作为供应商库需求手动添加到项目的 composer.json
文件中同样有效
{ "require": { "graste/params": "^3.0.0" } }
或者,您可以从 发布 下载发行存档。
文档和用法
$data = array( 'str' => 'some string', 'first_level' => 'first level', 'nested' => array( 'str' => 'some nested string', '2nd level' => 'second level', ), 'more' => array( 'str' => 'other nested string', ) ); // base object of the aliased versions: $arrayobj = new \Params\ConfigurableArrayObject($array); // create mutable parameters instance: $params = new \Params\Parameters($data); // or initialize an immutable instance that prevents further modifications after construction $params = new \Params\Immutable\ImmutableParameters($data); // do you like options instead of parameters in your classes? $params = new \Params\Options($data); $params = new \Params\Immutable\ImmutableOptions($data); // do you like settings instead of parameters in your classes? $params = new \Params\Settings($data); $params = new \Params\Immutable\ImmutableSettings($data); // use it as a recursive object: $params->has("foo") // returns true now $params->get("str") // gives "some string" $params->get("nested") // gives array stored under "nested" key $params->get("nested")->get('str') // gives "some nested string" $params->get("non-existant", "default value") // gives "default value" as given key is non existant $params->get("nested")->set("foo", "bar") // sets key "foo" to value "bar" on the "nested" array $params->getKeys() // returns all first level keys $params->toArray() // returns internal array // or use the mutable methods $params->set("foo", "bar") // sets key "foo" to value "bar" $params->add(array|ArrayAccess) // add array or other ArrayAccess implementing object to current instance $params->clear() // empty internal array $params->map(function($key, $value) { … }) // modifies each value to the value returned by the callback // retrieve values using expressions $params->getValues("foo") // gives "bar" $params->getValues("nested.str") // gives "some nested string" $params->getValues('*.str') // gives array("some nested string", "other nested string") $params->getValues('[str, nested.str]') // gives array("some string", "some nested string") $params->getValues('nested."2nd level" || first_level') // gives "second level" as that key exists; other expression not evaluated $params->getValues('first_level || nested."2nd level"') // gives "first level" as that key exists; other expression not evaluated // use it as an array: $params["str"] // gives "some string" $params["nested"] // gives the array under the "nested" key $params[1] // gives "first level" // use it as an object with properties $params->foo = 'bar' // sets key 'foo' to value 'bar' $params->filter->bool = 'yes' // sets $params['filter']['bool'] to value 'yes'
使用的表达式语法由 Michael Dowling 的 JMESPath 提供。
特性
可以使用 特性 为自己的可配置类创建
ImmutableParametersTrait
包装parameters
ParametersTrait
包装parameters
ImmutableOptionsTrait
包装options
OptionsTrait
包装options
ImmutableSettingsTrait
包装settings
SettingsTrait
包装settings
为了支持流畅的 API,方法 add
、set
、remove
和 clear
返回它们混合到的类实例。
ElasticSearch 查询
Parameters
提供的语法糖不仅方便定义可配置类,而且简化了 ElasticSearch 查询的创建和修改。
$params->filter->bool->must[1]->term->live = false; $params->get('filter')->set('bool', …); $params->filter->bool->must[] = array(…);
贡献
请通过 分叉 并发送一个 pull request 来贡献。更多信息可以在 CONTRIBUTING.md
文件中找到。
要在该存储库上进行开发,克隆您的分叉并使用 Makefile
目标
make install
安装 composer 和所有必要的供应商库make tests
运行 phpunit 测试make code-sniffer-cli
在控制台运行代码审查器
代码尝试遵循以下 PHP-FIG 标准: PSR-4、PSR-1 和 PSR-2。当前许可证为 MIT。
作者和贡献者列在该存储库的 github 贡献者图表 中。许可证文件必须保持完整,以便于归因和共享这项工作。
变更日志
查看更多关于更改的信息,请参阅CHANGELOG.md
。