dd/evolutioncms-snippets-ddobjecttools

此包的最新版本(1.0.0)没有提供许可证信息。

修改对象的工具。

1.0.0 2024-06-13 15:12 UTC

This package is auto-updated.

Last update: 2024-09-06 08:57:21 UTC


README

修改对象的工具。

要求

安装

使用(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. 元素 → 片段:创建一个新片段,以下数据

  1. 片段名称:ddObjectTools
  2. 描述:<b>1.0</b> 修改对象的工具。
  3. 类别:核心
  4. 解析DocBlock:
  5. 片段代码(PHP):将存档中的 ddObjectTools_snippet.php 文件的内容插入。

2. 元素 → 管理文件

  1. 创建一个新的文件夹 assets/snippets/ddObjectTools/
  2. 将存档提取到文件夹中(除 ddObjectTools_snippet.php 外)。

参数描述

  • sourceObject

    • 描述:源对象或数组。
    • 有效值
      • stringJsonObject — 作为 JSON
      • stringJsonArray — 作为 JSON
      • stringHjsonObject — 作为 HJSON
      • stringHjsonArray — 作为 HJSON
      • stringQueryFormatted — 作为 查询字符串
      • 它也可以设置为原生PHP对象或数组(例如,通过 $modx->runSnippet 调用)
        • 数组
        • 对象
    • 默认值:'{}'
  • extend

    • 描述:将两个或多个对象/数组的内容合并到 sourceObject 中(它将接收新的属性)。
    • 有效值
      • stringJsonObject — 作为 JSON
      • stringHjsonObject — 作为 HJSON
      • stringQueryFormatted — 作为 查询字符串
      • 它也可以设置为原生PHP对象或数组(例如,通过 $modx->runSnippet 调用)
        • arrayAssociative
        • 对象
    • 默认值:—
  • extend->objects

    • 描述:要合并的对象或数组。此外,对象可以扩展数组,反之亦然。
    • 有效值
      • 数组
      • stringJsonArray — 作为 JSON
      • stringHjsonArray — 作为 HJSON
      • stringQueryFormatted — 作为 查询字符串
    • 必需
  • extend->objects[i]

    • 描述:包含要合并的附加属性的对象或数组。
    • 有效值
      • 对象
      • 数组
    • 必需
  • extend->deep

    • 描述:如果为真,则合并变为递归(也称为“深拷贝”)。
    • 有效值:布尔值
    • 默认值:true
  • extend->overwriteWithEmpty

    • 描述:用空值覆盖字段。
      以下值被认为是空的
      • '' — 空字符串
      • [] — 空数组
      • (object) [] — 空对象
      • NULL
    • 有效值:布尔值
    • 默认值:true
  • getPropValue

    • 描述:此参数允许您返回对象所需的属性。
    • 有效值
      • string — 仅属性名称或要返回的数组索引/键,在这种情况下使用 getPropValue->name
      • 附加参数的对象
        • stringJsonObject — 作为 JSON
        • stringHjsonObject — 作为 HJSON
        • stringQueryFormatted — 作为 查询字符串
        • 它也可以设置为原生PHP对象或数组(例如,通过 \DDTools\Snippet::runSnippet$modx->runSnippet 调用)
          • arrayAssociative
          • 对象
    • 默认值:—
  • getPropValue->name

    • 描述:要返回的对象属性名称或数组索引/键。
      您还可以使用 '.' 来获取嵌套属性(更多信息请参见 \DDTools\ObjectTools::getPropValue)。
    • 有效值:string
    • 必需
  • getPropValue->notFoundResult

    • 描述:属性未找到时返回的内容。
    • 有效值:mixed
    • 默认值:null
  • outputter

    • 描述:输出格式(当结果为对象或数组时)。
      值不区分大小写(以下值相等:'stringjsonauto''stringJsonAuto''STRINGJSONAUTO' 等)。
    • 有效值
      • 代码片段可以返回对象作为字符串
        • 'stringJsonAuto' — 根据 result 对象返回 stringJsonObjectstringJsonArray
        • 'stringJsonObject'
        • 'stringJsonArray'
        • 'stringQueryFormatted' — [查询字符串](https://en.wikipedia.org/wiki/Query_string)
      • 代码片段也可以返回原生的 PHP 对象或数组(通过 \DDTools\Snippet 调用更方便)。
        • 'objectAuto' — 根据 result 对象返回 stdClassarray
        • '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,
				],
			],
		],
	],
]);

链接