Инструменты для изменения объектов.
- 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).arrayobject
- Значение по умолчанию:
'{}'
-
extend- Описание: Объединение содержимое двух и более объектов / массивов вместе в
sourceObject(он получит новые свойства). - Допустимые значения:
stringJsonObject— в виде JSONstringHjsonObject— в виде HJSONstringQueryFormatted— в виде Query string- Также может быть задан, как нативный PHP объект или массив (например, для вызовов через
$modx->runSnippet).arrayAssociativeobject
- Значение по умолчанию: —
- Описание: Объединение содержимое двух и более объектов / массивов вместе в
-
extend->objects- Описание: Объекты или массивы для объединения. Кроме того, объекты могут расширять массивы и наоборот.
- Допустимые значения:
arraystringJsonArray— в виде JSONstringHjsonArray— в виде HJSONstringQueryFormatted— в виде Query string
- Обязателен
-
extend->objects[i]- Описание: Объект или массив, содержащий дополнительные свойства для слияния.
- Допустимые значения:
objectarray
- Обязателен
-
extend->deep- Описание: Если
true, слияние становится рекурсивным (так называемое «глубокое копирование»). - Допустимые значения:
boolean - Значение по умолчанию:
true
- Описание: Если
-
extend->overwriteWithEmpty- Описание: Перезаписать поля пустыми значениями.
Следующие значения считаются пустыми:''— пустая строка[]— пустой массив(object) []— пустой объектNULL
- Допустимые значения:
boolean - Значение по умолчанию:
true
- Описание: Перезаписать поля пустыми значениями.
-
getPropValue- Описание: Этот параметр позволяет получить нужное свойство объекта.
- Допустимые значения:
string— просто имя поля объекта или элемента массива, которое нужно вернуть, в этом случае используйте какgetPropValue->name- Объект с дополнительными параметрами:
stringJsonObject— в виде JSONstringHjsonObject— в виде HJSONstringQueryFormatted— в виде Query string- Также может быть задан, как нативный PHP объект или массив (например, для вызовов через
\DDTools\Snippet::runSnippet).arrayAssociativeobject
- Значение по умолчанию: —
-
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,
],
],
],
],
]);