Инструменты для изменения объектов.
- PHP >= 5.6
- (MODX)EvolutionCMS >= 1.1
- (MODX)EvolutionCMS.libraries.ddTools >= 0.62
Используя (MODX)EvolutionCMS.libraries.ddInstaller
Просто вызовите следующий код в своих исходинках или модуле Console:
//Подключение (MODX)EvolutionCMS.libraries.ddInstaller
require_once(
$modx->getConfig('base_path') .
'assets/libs/ddInstaller/require.php'
);
//Установка (MODX)EvolutionCMS.snippets.ddObjectTools
\DDInstaller::install([
'url' => 'https://github.com/DivanDesign/EvolutionCMS.snippets.ddObjectTools',
'type' => 'snippet',
]);
- Если
ddObjectTools
отсутствует на вашем сайте,ddInstaller
просто установит его. - Если
ddObjectTools
уже есть на вашем сайте,ddInstaller
проверит его версию и обновит, если нужно.
- Название сниппета:
ddObjectTools
. - Описание:
<b>1.0</b> Tools for modifying objects.
. - Категория:
Core
. - Анализировать DocBlock:
no
. - Код сниппета (php): Вставьте содержимое файла
ddObjectTools_snippet.php
из архива.
- Создайте новую папку
assets/snippets/ddObjectTools/
. - Извлеките содержимое архива в неё (кроме файла
ddObjectTools_snippet.php
).
-
sourceObject
- Описание: Исходный объект или массив.
- Допустимые значения:
stringJsonObject
— в виде JSONstringJsonArray
— в виде JSONstringHjsonObject
— в виде HJSONstringHjsonArray
— в виде HJSONstringQueryFormatted
— в виде Query string- Также может быть задан, как нативный PHP объект или массив (например, для вызовов через
$modx->runSnippet
).array
object
- Значение по умолчанию:
'{}'
-
extend
- Описание: Объединение содержимое двух и более объектов / массивов вместе в
sourceObject
(он получит новые свойства). - Допустимые значения:
stringJsonObject
— в виде JSONstringHjsonObject
— в виде HJSONstringQueryFormatted
— в виде Query string- Также может быть задан, как нативный PHP объект или массив (например, для вызовов через
$modx->runSnippet
).arrayAssociative
object
- Значение по умолчанию: —
- Описание: Объединение содержимое двух и более объектов / массивов вместе в
-
extend->objects
- Описание: Объекты или массивы для объединения. Кроме того, объекты могут расширять массивы и наоборот.
- Допустимые значения:
array
stringJsonArray
— в виде JSONstringHjsonArray
— в виде HJSONstringQueryFormatted
— в виде Query string
- Обязателен
-
extend->objects[i]
- Описание: Объект или массив, содержащий дополнительные свойства для слияния.
- Допустимые значения:
object
array
- Обязателен
-
extend->deep
- Описание: Если
true
, слияние становится рекурсивным (так называемое «глубокое копирование»). - Допустимые значения:
boolean
- Значение по умолчанию:
true
- Описание: Если
-
extend->overwriteWithEmpty
- Описание: Перезаписать поля пустыми значениями.
Следующие значения считаются пустыми:''
— пустая строка[]
— пустой массив(object) []
— пустой объектNULL
- Допустимые значения:
boolean
- Значение по умолчанию:
true
- Описание: Перезаписать поля пустыми значениями.
-
getPropValue
- Описание: Этот параметр позволяет получить нужное свойство объекта.
- Допустимые значения:
string
— просто имя поля объекта или элемента массива, которое нужно вернуть, в этом случае используйте какgetPropValue->name
- Объект с дополнительными параметрами:
stringJsonObject
— в виде JSONstringHjsonObject
— в виде HJSONstringQueryFormatted
— в виде Query string- Также может быть задан, как нативный PHP объект или массив (например, для вызовов через
\DDTools\Snippet::runSnippet
).arrayAssociative
object
- Значение по умолчанию: —
-
getPropValue->name
- Описание: Имя поля объекта или индекс / ключ массива.
Вы также можете использовать'.'
для получения вложенных свойств (больше информации см.\DDTools\ObjectTools::getPropValue
). - Допустимые значения:
string
- Обязателен
- Описание: Имя поля объекта или индекс / ключ массива.
-
getPropValue->notFoundResult
- Описание: Что вернуть, если нужное свойство не найдено.
- Допустимые значения:
mixed
- Значение по умолчанию:
null
-
outputter
- Описание: Формат вывода (когда результат является объектом или массивом).
Значения регистронезависимы (следующие значения равны:stringjsonauto
,stringJsonAuto
,STRINGJSONAUTO
и т. п.). - Допустимые значения:
- Сниппет умеет возвращать объект в виде строки:
'stringJsonAuto'
— автоматиески будет выбранstringJsonObject
илиstringJsonArray
, в зависимости от результата'stringJsonObject'
'stringJsonArray'
'stringQueryFormatted'
— Query string
- Сниппет также умеет возвращать объект в виде нативного PHP объекта или массива (удобно при вызове через
\DDTools\Snippet
):'objectAuto'
—stdClass
илиarray
в зависимости от результата'objectStdClass'
—stdClass
'objectArray'
—array
- Сниппет умеет возвращать объект в виде строки:
- Значение по умолчанию:
'stringJsonAuto'
- Описание: Формат вывода (когда результат является объектом или массивом).
Все примеры написаны с использованием HJSON, но вместо него можно также использвоать обычный JSON.
[[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: Виктор
lastName: Цой
dates: {
born: 1962.06.21
}
}`
&getPropValue=`{
name: dates.death
notFoundResult: вечно живой
}`
]]
Returns: вечно живой
.
[[ddObjectTools?
&sourceObject=`[
Pink Floyd
The Beatles
Queen
]`
&getPropValue=`2`
]]
Вернёт: Queen
.
[[ddObjectTools?
&sourceObject=`{
firstName: Angus
lastName: Young
}`
&outputter=`jsonArray`
]]
Вернёт:
[
"Angus",
"Young"
]
//Подключение (MODX)EvolutionCMS.libraries.ddTools
require_once(
$modx->getConfig('base_path') .
'assets/libs/ddTools/modx.ddtools.class.php'
);
//Запуск (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,
],
],
],
],
]);