dd / evolutioncms-snippets-ddobjecttools
此包的最新版本(1.0.0)没有提供许可证信息。
修改对象的工具。
1.0.0
2024-06-13 15:12 UTC
Requires
- php: >=5.6.0
- dd/evolutioncms-libraries-ddtools: >=0.62.0
This package is auto-updated.
Last update: 2024-09-06 08:57:21 UTC
README
修改对象的工具。
要求
- PHP >= 5.6
- (MODX)EvolutionCMS >= 1.1
- (MODX)EvolutionCMS.libraries.ddTools >= 0.62
安装
使用(MODX)EvolutionCMS.libraries.ddInstaller
只需在您的源代码或控制台中运行以下PHP代码
//Include (MODX)EvolutionCMS.libraries.ddInstaller require_once( $modx->getConfig('base_path') . 'assets/libs/ddInstaller/require.php' ); //Install (MODX)EvolutionCMS.snippets.ddObjectTools \DDInstaller::install([ 'url' => 'https://github.com/DivanDesign/EvolutionCMS.snippets.ddObjectTools', 'type' => 'snippet', ]);
- 如果您的网站上不存在
ddObjectTools,则ddInstaller将直接安装它。 - 如果您的网站上已存在
ddObjectTools,则ddInstaller将检查其版本并在需要时更新它。
手动安装
1. 元素 → 片段:创建一个新片段,以下数据
- 片段名称:
ddObjectTools。 - 描述:
<b>1.0</b> 修改对象的工具。。 - 类别:
核心。 - 解析DocBlock:
否。 - 片段代码(PHP):将存档中的
ddObjectTools_snippet.php文件的内容插入。
2. 元素 → 管理文件
- 创建一个新的文件夹
assets/snippets/ddObjectTools/。 - 将存档提取到文件夹中(除
ddObjectTools_snippet.php外)。
参数描述
-
sourceObject -
extend -
extend->objects -
extend->objects[i]- 描述:包含要合并的附加属性的对象或数组。
- 有效值
对象数组
- 必需
-
extend->deep- 描述:如果为真,则合并变为递归(也称为“深拷贝”)。
- 有效值:
布尔值 - 默认值:
true
-
extend->overwriteWithEmpty- 描述:用空值覆盖字段。
以下值被认为是空的''— 空字符串[]— 空数组(object) []— 空对象NULL
- 有效值:
布尔值 - 默认值:
true
- 描述:用空值覆盖字段。
-
getPropValue -
getPropValue->name- 描述:要返回的对象属性名称或数组索引/键。
您还可以使用'.'来获取嵌套属性(更多信息请参见\DDTools\ObjectTools::getPropValue)。 - 有效值:
string - 必需
- 描述:要返回的对象属性名称或数组索引/键。
-
getPropValue->notFoundResult- 描述:属性未找到时返回的内容。
- 有效值:
mixed - 默认值:
null
-
outputter- 描述:输出格式(当结果为对象或数组时)。
值不区分大小写(以下值相等:'stringjsonauto'、'stringJsonAuto'、'STRINGJSONAUTO'等)。 - 有效值
- 代码片段可以返回对象作为字符串
'stringJsonAuto'— 根据 result 对象返回stringJsonObject或stringJsonArray'stringJsonObject''stringJsonArray''stringQueryFormatted'— [查询字符串](https://en.wikipedia.org/wiki/Query_string)
- 代码片段也可以返回原生的 PHP 对象或数组(通过
\DDTools\Snippet调用更方便)。'objectAuto'— 根据 result 对象返回stdClass或array'objectStdClass'—stdClass'objectArray'—array
- 代码片段可以返回对象作为字符串
- 默认值:
'stringJsonAuto'
- 描述:输出格式(当结果为对象或数组时)。
示例
所有示例均使用 HJSON 编写,但您也可以使用纯 JSON。
合并两个或多个对象的内容到第一个对象(使用 extend 参数)
[[ddObjectTools?
&sourceObject=`{
cat: mew
dog: {
name: Floyd
weight: 6
}
rabbit: 42
}`
&extend=`{
objects: [
{
dog: {
weight: 10
}
bird: 0
}
]
}`
]]
返回
{
"cat": "mew",
"dog": {
"name": "Floyd",
"weight": 10,
},
"rabbit": 42,
"bird": 0
}
获取对象属性
[[ddObjectTools?
&sourceObject=`{
firstName: Chuck
lastName: Norris
}`
&getPropValue=`firstName`
]]
返回:Chuck。
属性未找到时的自定义结果
[[ddObjectTools?
&sourceObject=`{
firstName: Viktor
lastName: Tsoi
dates: {
born: 1962.06.21
}
}`
&getPropValue=`{
name: dates.death
notFoundResult: forever alive
}`
]]
返回:永远活着。
获取数组元素
[[ddObjectTools?
&sourceObject=`[
Pink Floyd
The Beatles
Queen
]`
&getPropValue=`2`
]]
返回:Queen。
将 JSON 对象转换为数组
[[ddObjectTools?
&sourceObject=`{
firstName: Angus
lastName: Young
}`
&outputter=`jsonArray`
]]
返回
[ "Angus", "Young" ]
通过 \DDTools\Snippet::runSnippet 运行代码片段,无需数据库和 eval
//Include (MODX)EvolutionCMS.libraries.ddTools require_once( $modx->getConfig('base_path') . 'assets/libs/ddTools/modx.ddtools.class.php' ); //Run (MODX)EvolutionCMS.snippets.ddObjectTools \DDTools\Snippet::runSnippet([ 'name' => 'ddObjectTools', 'params' => [ 'sourceObject' => [ 'cat' => 'mew', 'dog' => [ 'name' => 'Floyd', 'weight' => 6, ], 'rabbit' => 42, ], 'extend' => [ 'objects' => [ [ 'dog' => [ 'weight' => 11, ], 'bird' => 0, ], ], ], ], ]);