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
ddObjectToolsis not exist on your site,ddInstallerwill just install it. - If
ddObjectToolsis already exist on your site,ddInstallerwill 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.phpfile 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):arrayobject
- 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):arrayAssociativeobject
- 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:
arraystringJsonArray— as JSONstringHjsonArray— as HJSONstringQueryFormatted— as Query string
- Required
-
extend->objects[i]- Description: An object or array containing additional properties to merge in.
- Valid values:
objectarray
- 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->namein 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::runSnippetor$modx->runSnippet):arrayAssociativeobject
- 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::getPropValuefor 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'—stringJsonObjectorstringJsonArraydepends 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'—stdClassorarraydepends 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,
],
],
],
],
]);