Tools for modifying objects.
- PHP >= 5.6
- (MODX)EvolutionCMS >= 1.1
- (MODX)EvolutionCMS.libraries.ddTools >= 0.62
Just run the following PHP code in your sources or Console:
//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',
]);
- If
ddObjectTools
is not exist on your site,ddInstaller
will just install it. - If
ddObjectTools
is already exist on your site,ddInstaller
will check it version and update it if needed.
- Snippet name:
ddObjectTools
. - Description:
<b>1.0</b> Tools for modifying objects.
. - Category:
Core
. - Parse DocBlock:
no
. - Snippet code (php): Insert content of the
ddObjectTools_snippet.php
file from the archive.
- Create a new folder
assets/snippets/ddObjectTools/
. - Extract the archive to the folder (except
ddObjectTools_snippet.php
).
-
sourceObject
- Description: Source object or array.
- Valid values:
stringJsonObject
— as JSONstringJsonArray
— as JSONstringHjsonObject
— as HJSONstringHjsonArray
— as HJSONstringQueryFormatted
— as Query string- It can also be set as a native PHP object or array (e. g. for calls through
$modx->runSnippet
):array
object
- Default value:
'{}'
-
extend
- Description: Merge the contents of two or more objects / arrays together into
sourceObject
(it will receive the new properties). - Valid values:
stringJsonObject
— as JSONstringHjsonObject
— as HJSONstringQueryFormatted
— as Query string- It can also be set as a native PHP object or array (e. g. for calls through
$modx->runSnippet
):arrayAssociative
object
- Default value: —
- Description: Merge the contents of two or more objects / arrays together into
-
extend->objects
- Description: Objects or arrays to merge. Moreover, objects can extend arrays and vice versa.
- Valid values:
array
stringJsonArray
— as JSONstringHjsonArray
— as HJSONstringQueryFormatted
— as Query string
- Required
-
extend->objects[i]
- Description: An object or array containing additional properties to merge in.
- Valid values:
object
array
- Required
-
extend->deep
- Description: If true, the merge becomes recursive (aka “deep copy”).
- Valid values:
boolean
- Default value:
true
-
extend->overwriteWithEmpty
- Description: Overwrite fields with empty values.
The following values are considered to be empty:''
— an empty string[]
— an empty array(object) []
— an empty objectNULL
- Valid values:
boolean
- Default value:
true
- Description: Overwrite fields with empty values.
-
getPropValue
- Description: This parameter allows you to return required property of an object.
- Valid values:
string
— just name of a property or array index / key to return, use asgetPropValue->name
in this case- An object of additional parameters:
stringJsonObject
— as JSONstringHjsonObject
— as HJSONstringQueryFormatted
— as Query string- It can also be set as native PHP object or array (e. g. for calls through
\DDTools\Snippet::runSnippet
or$modx->runSnippet
):arrayAssociative
object
- Default value: —
-
getPropValue->name
- Description: Object property name or array index / key to return.
You can also use'.'
to get nested properties (see\DDTools\ObjectTools::getPropValue
for more info). - Valid values:
string
- Required
- Description: Object property name or array index / key to return.
-
getPropValue->notFoundResult
- Description: What will be returned when the property is not found.
- Valid values:
mixed
- Default value:
null
-
outputter
- Description: Output format (when result is an object or array).
Values are case insensitive (the following values are equal:'stringjsonauto'
,'stringJsonAuto'
,'STRINGJSONAUTO'
, etc). - Valid values:
- The snippet can return object as string:
'stringJsonAuto'
—stringJsonObject
orstringJsonArray
depends on result object'stringJsonObject'
'stringJsonArray'
'stringQueryFormatted'
— Query string
- The snippet can also return object as a native PHP object or array (it is convenient to call through
\DDTools\Snippet
).'objectAuto'
—stdClass
orarray
depends on result object'objectStdClass'
—stdClass
'objectArray'
—array
- The snippet can return object as string:
- Default value:
'stringJsonAuto'
- Description: Output format (when result is an object or array).
All examples are written using HJSON, but if you want you can use vanilla JSON instead.
[[ddObjectTools?
&sourceObject=`{
cat: mew
dog: {
name: Floyd
weight: 6
}
rabbit: 42
}`
&extend=`{
objects: [
{
dog: {
weight: 10
}
bird: 0
}
]
}`
]]
Returns:
{
"cat": "mew",
"dog": {
"name": "Floyd",
"weight": 10,
},
"rabbit": 42,
"bird": 0
}
[[ddObjectTools?
&sourceObject=`{
firstName: Chuck
lastName: Norris
}`
&getPropValue=`firstName`
]]
Returns: Chuck
.
[[ddObjectTools?
&sourceObject=`{
firstName: Viktor
lastName: Tsoi
dates: {
born: 1962.06.21
}
}`
&getPropValue=`{
name: dates.death
notFoundResult: forever alive
}`
]]
Returns: forever alive
.
[[ddObjectTools?
&sourceObject=`[
Pink Floyd
The Beatles
Queen
]`
&getPropValue=`2`
]]
Returns: Queen
.
[[ddObjectTools?
&sourceObject=`{
firstName: Angus
lastName: Young
}`
&outputter=`jsonArray`
]]
Returns:
[
"Angus",
"Young"
]
//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,
],
],
],
],
]);