====== Объект w_object ======
Родительский класс для многих классов системы.
===== Расположение =====
''core/object2.php''
===== Селекторы =====
Селекторы представляют собой ассоциированный массив со значениями определяющими выборку. Если вместо массива указать скалярную переменную - выбирается селектор по умолчанию. Наиболее часто селекторы используются в функциях item и items
^Селлектор^Описание^Тип^
|alias|элемент(ы) с данным alias|[[ядро:w_object#поля_объекта|Поле alias элемента]], array|
|id|элемент(ы) с данным id|[[ядро:w_object#поля_объекта|Поле id элемента]], array|
|!id|исключая элемент(ы) с данным id|[[ядро:w_object#поля_объекта|Поле id элемента]], array|
|childrens_of|Является непосредственным дочерним элементом|[[ядро:w_object#поля_объекта|Поле id родительского элемента]]|
|next_of|Элемент находится после элемента|[[ядро:w_object#поля_объекта|Поле id предыдущего элемента]]|
|nogroup|Не группировать элементы|boolean|
|noordering|Не сортировать элементы|boolean|
|parent_of|Является непосредственным родительским элементом|[[ядро:w_object#поля_объекта|Поле id дочернего элемента]]|
|parents_of|Является родительским элементом|[[ядро:w_object#поля_объекта|Поле id дочернего элемента]]|
|prev_of|Элемент находится перед элементом|[[ядро:w_object#поля_объекта|Поле id следующего элемента]]|
|property_exists|Содержит свойство|[[ядро:w_property#поля_объекта|Поле id объекта w_property]],[[ядро:w_property#поля_объекта|Поле alias объекта w_property]]|
|property_inherit|При выборке наследовать свойства от родителей|bool|
|published|Установлена публикация элемента (наследуется от родителя в древе)|bool|
|siblings_of|Является сиблингом (элемент одной ветки) для элемента|[[ядро:w_object#поля_объекта|Поле id дочернего элемента]]|
|tree_of|Является дочерним элементом|[[ядро:w_object#поля_объекта|Поле id родительского элемента]]|
|value|Содержит свойства с данным значениeм (значениями)|[[ядро:w_value#селекторы|Селектор w_value]],[[ядро:w_value#селекторы|[Селектор w_value]]]|
|sort|сортировка|string|
|group|группировка|string|
|start|выбирать начиная с номера элемента|int|
|limit|количество элементов|int|
^По-умолчанию|id элемента|int|
===== Алиас =====
Алиас элемента - уникальный идентификатор для элемента в ветке.
Правила построения:
* Все нелатинские символы транслитеруются
* Алиас может содержать следующие символы ''a-z 0-9 - _ ~'', остальные символы будут удалены
* Если алиас не уникален, к нему добавляется числовой индекс
* Если алиас числовой и не соответствует id текущего элемента к нему добавляется префикс ''n''
* Если после проверок алиас оказывается пустым, он устанавливается равным id текущего элемента
===== Поля объекта =====
Получить поле можно обратившись к экземпляру класса.
//Примечание: в данной документации полями называются свойства объектов, чтоб термин не конфликтовал с [[core:w_property|Объектом w_property]] отвечающим за хранение свойств-признаков элементов.//
==== Сохраняемые поля объекта ====
Поля объекта, записываемые в базу данных. Данные поля можно сохранить с помощью функции save();
^Поле^Описание^Тип^
|alias|[[ядро:w_object#алиас|алиас]] элемента|string|
|ordering|порядок элемента в ветке|int|
|parent_id|id родительского элемента|int|
==== Динамические поля объекта ====
Поля объекта создаваемые при его загрузке
^Поле^Описание^Тип^
|id|id элемента|int|
|is_new|Флаг элемента, сохраненного первый раз (нового элемента)|boolean|
|is_simular|Флаг, все элементы объекта принадлежат одному классу|boolean|
===== Итерация объекта и доступ к элементам =====
Объект содержит набор элементов, которые выбираются с помощью функций items или item. Элементы объекта могут итерировтаться как массив. Для доступа к определенным элементам существует набор функций.
Работа с объектом на примере w_catalog
$items = w_catalog::items(['type'=>'product']); //выбираем все товары
foreach($items as $item){
echo $item->title; //выводим поля заголовка всех объектов в цикле
}
$item3 = $items->eq(3); //получаем доступ к третьему элементу
echo $item3->title; //выводим его поле заголовока
$item_last = $items->last(); //получаем доступ к последнему элементу
$item_last->title = 'Новый заголовок';
$item_last->save(); //сохраняем элемент
$items->save(); //либо сохраняем весь набор элементов
echo $items->title; //выводим поле заголовока первого элемента набора
===== Статичные методы =====
==== checkpoint ====
w_object::**checkpoint**(//info//)
Функция для замера времени выполнения участка кода. Отсчет производится между вызовами функций. Если интервал между вызовами меньше 1мс, либо не указан текст сообщения - сообщение не выводится. Счетчики независимы для разных классов.
^Аргумент^Описание^Тип^По-умолчанию^
|info|Выводимое сообщение|string| |
^Возвращает|true|boolean| |
w_object2::checkpoint();
for($i=1;$i<10000000;$i++){ }
w_object2::checkpoint('Конец выполнения цикла'); //Выведет: w_object2: Конец выполнения цикла 0.0677
==== count ====
w_object::**count**(//params//)
Посчитать количество элементов
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== create ====
w_object::**create**(//params//)
Создать элемент
^Возвращает|Созданный объект|[[ядро:w_object|Объект]]| |
==== empty ====
w_object::**empty**()
Создать пустой объект
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== ids ====
w_object::**ids**(//params//)
Получить массив id выбранных элементов
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
^Возвращает|Массив id выбранных элементов|[[ядро:w_object#поля объекта|[поле id элемента]]]| |
==== item ====
w_object::**item**(//params//,//force//,//nocache//)
Выбрать единственный элемент по параметрам
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
|force|Не брать из кеша|boolean|false|
|nocahe|Не кешировать|boolean|false|
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== items ====
w_object::**items**(//params//,//force//,//nocache//)
Выбрать группу элементов по параметрам
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
|force|Не брать из кеша|boolean|false|
|nocahe|Не кешировать|boolean|false|
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== parentRepair ====
w_object::**parentRepair**()
Перестроить карту родителей для всех элементов.
^Аргумент^Описание^Тип^По-умолчанию^
^Возвращает|true, в случае успеха|boolean| |
==== remove ====
w_object::**remove**(//params//)
Удалить элементы по параметрам
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
^Возвращает|true, если удаление успешно|boolean| |
==== wipe ====
w_object::**wipe**()
Полное удаление всех элементов класса, а также связанных с ними элементов.
^Аргумент^Описание^Тип^По-умолчанию^
^Возвращает|true|boolean|
===== Методы объекта =====
==== aliasSave ====
$object%%->%%**aliasSave**()
Установить [[ядро:w_object#алиас|алиас]], заданный полем [[ядро:w_object#поля_объекта|alias]] текущего элемента(ов)
^Аргумент^Описание^Тип^По-умолчанию^
^Возвращает|true, в случае успеха|boolean| |
==== cacheGet ====
$object%%->%%**cacheGet**(//params//)
Получить группу элементов из кеша по параметрам //params//.
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== cacheRemove ====
$object%%->%%**cacheRemove**(//params//)
Удалить группу элементов из кеша по параметрам //params//.
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
^Возвращает|true|boolean| |
==== childrens ====
$object%%->%%**childrens**(//params//,//force//)
Получить непосредственные дочерние элементы. Если текущий объект содержит несколько элементов - в результирующем объекте окажутся дочерние элементы для каждого элемента.
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
|force|Не брать из кеша|boolean|false|
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== copyAfter ====
$object%%->%%**copyAfter**(//sibling_id//)
Скопировать элемент. Установить скопированный элемент следующим после элемента sibling_id.
^Аргумент^Описание^Тип^По-умолчанию^
|sibling_id|id элемента, после которого необходимо переместить скопированный элемент|[[ядро:w_object#поля_объекта|Поле id элемента]] обязательный| |
^Возвращает|Скопированный элемент|[[ядро:w_object|Объект]]| |
==== copyAppend ====
$object%%->%%**copyAppend**(//parent_id//)
Скопировать элемент. Установить скопированный элемент последним в списке дочерних элементов элемента sibling_id.
^Аргумент^Описание^Тип^По-умолчанию^
|parent_id|id элемента, внутрь которого необходимо переместить скопированный элемент|[[ядро:w_object#поля_объекта|Поле id элемента]] или 0 обязательный| |
^Возвращает|Скопированный элемент|[[ядро:w_object|Объект]]| |
==== copyВefore ====
$object%%->%%**copyВefore**(//sibling_id//)
Скопировать элемент. Установить скопированный элемент последним в списке дочерних элементов элемента sibling_id.
^Аргумент^Описание^Тип^По-умолчанию^
|sibling_id|id элемента, перед которым необходимо переместить скопированный элемент|[[ядро:w_object#поля_объекта|Поле id элемента]] обязательный| |
^Возвращает|Скопированный элемент|[[ядро:w_object|Объект]]| |
==== copyPrepend ====
$object%%->%%**copyPrepend**(//parent_id//)
Скопировать элемент. Установить скопированный элемент первым в списке дочерних элементов элемента sibling_id.
^Аргумент^Описание^Тип^По-умолчанию^
|parent_id|id элемента, внутрь которого необходимо переместить скопированный элемент|[[ядро:w_object#поля_объекта|Поле id элемента]] или 0 обязательный| |
^Возвращает|Скопированный элемент|[[ядро:w_object|Объект]]| |
==== eq ====
$object%%->%%**eq**(//index//)
Выбор элемента из объекта по порядковому номеру
^Аргумент^Описание^Тип^По-умолчанию^
|index|Индекс элемента|int обязательное| |
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== first ====
$object%%->%%**first**()
Выбор первого элемента из объекта
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== free ====
$object%%->%%**free**()
Очистить кеш объекта и освободить память под него
^Возвращает|true|boolean| |
==== hasParent ====
$object%%->%%**hasParent**(//parent_id//)
Проверка принадлежности элемента к родителю
^Аргумент^Описание^Тип^По-умолчанию^
|parent_id|id родителя|[[ядро:w_object#поля_объекта|Поле id родителя]] обязательный| |
^Возвращает|true в случае если элемент принадлежит родителю|boolean| |
==== image ====
$object%%->%%**image**(//params//,//force//)
Получить единственный элемент галереи объекта, или пустое изображение если отсутствует
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[core:w_gallery#селекторы|Селектор w_gallery]]|[]|
|force|Не брать из кеша|boolean|false|
^Возвращает|Объект галереи|[[core:w_gallery|Объект]]| |
==== images ====
$object%%->%%**images**(//params//,//force//)
Получить элементы галереи объекта
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[core:w_gallery#селекторы|Селектор w_gallery]]|[]|
|force|Не брать из кеша|boolean|false|
^Возвращает|Объект галереи|[[core:w_gallery|Объект]]| |
==== insert ====
$object%%->%%**insert**(//object//)
Скопировать элементы объекта object в текущий объект
^Аргумент^Описание^Тип^По-умолчанию^
|object|Объект|[[ядро:w_object|Объект]]| |
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== implode ====
$object%%->%%**implode**(//glue//,//field//)
Склеить значения полей через разделитель
^Аргумент^Описание^Тип^По-умолчанию^
|glue|Разделитель|string обязательный| |
|field|Имя поля|[[ядро:w_object#поля_объекта|Поле]] обязательный| |
^Возвращает|Строка|string|
==== last ====
$object%%->%%**last**()
Выбор последнего элемента из объекта
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== length ====
$object%%->%%**length**()
Количество элементов объекта
^Возвращает|Количество элементов|int| |
==== moveAfter ====
$object%%->%%**moveAfter**(//sibling_id//)
Изменить порядок и родителя текущего элемента. Установить элемент следующим после элемента sibling_id.
^Аргумент^Описание^Тип^По-умолчанию^
|sibling_id|id элемента, после которого необходимо переместить текущий элемент|[[ядро:w_object#поля_объекта|Поле id элемента]] обязательный| |
^Возвращает|true, в случае успеха|boolean| |
==== moveAppend ====
$object%%->%%**moveAppend**(//parent_id//)
Изменить порядок и родителя текущего элемента. Установить элемент последним в списке дочерних элементов элемента sibling_id.
^Аргумент^Описание^Тип^По-умолчанию^
|parent_id|id элемента, внутрь которого необходимо переместить текущий элемент|[[ядро:w_object#поля_объекта|Поле id элемента]] или 0 обязательный| |
^Возвращает|true, в случае успеха|boolean| |
==== moveВefore ====
$object%%->%%**moveВefore**(//sibling_id//)
Изменить порядок и родителя текущего элемента. Установить элемент следующим перед элементом sibling_id.
^Аргумент^Описание^Тип^По-умолчанию^
|sibling_id|id элемента, перед которым необходимо переместить текущий элемент|[[ядро:w_object#поля_объекта|Поле id элемента]] обязательный| |
^Возвращает|true, в случае успеха|boolean| |
==== movePrepend ====
$object%%->%%**movePrepend**(//parent_id//)
Изменить порядок и родителя текущего элемента. Установить элемент первым в списке дочерних элементов элемента sibling_id.
^Аргумент^Описание^Тип^По-умолчанию^
|parent_id|id элемента, внутрь которого необходимо переместить текущий элемент|[[ядро:w_object#поля_объекта|Поле id элемента]] или 0 обязательный| |
^Возвращает|true, в случае успеха|boolean| |
==== next ====
$object%%->%%**next**(//params//,//force//)
Получить следующий элемент. Если текущий объект содержит несколько элементов - в результирующем объекте окажутся следующие элементы для каждого элемента.
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
|force|Не брать из кеша|boolean|false|
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== orderingSave ====
$object%%->%%**orderingSave**()
Сохранить порядок заданный полем [[ядро:w_object#поля_объекта|ordering]] текущего элемента(ов), пересортировать ветку в которой находится данный элемент.
^Аргумент^Описание^Тип^По-умолчанию^
^Возвращает|true, в случае успеха|boolean| |
==== pagintion ====
$object%%->%%**pagintion**(//max//)
Расчет пагинации
^Аргумент^Описание^Тип^По-умолчанию^
|max|Максимальное количество ключей|int|10|
^Возвращает|Массив ключей пагинации|array| |
==== parent ====
$object%%->%%**parent**(//params//,//force//)
Получить непосредственный родительский элемент. Если текущий объект содержит несколько элементов - в результирующем объекте окажутся родительские элементы для каждого элемента.
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
|force|Не брать из кеша|boolean|false|
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== parents ====
$object%%->%%**parents**(//params//,//force//)
Получить все родительские элементы. Если текущий объект содержит несколько элементов - в результирующем объекте окажутся родительские элементы для каждого элемента.
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
|force|Не брать из кеша|boolean|false|
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== parentSave ====
$object%%->%%**parentSave**()
Установить родителя, заданного полем [[ядро:w_object#поля_объекта|parent_id]] текущего элемента(ов)
^Аргумент^Описание^Тип^По-умолчанию^
^Возвращает|true, в случае успеха|boolean| |
==== prev ====
$object%%->%%**prev**(//params//,//force//)
Получить предыдущий элемент уровня. Если текущий объект содержит несколько элементов - в результирующем объекте окажутся предыдущие элементы для каждого элемента.
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
|force|Не брать из кеша|boolean|false|
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== remove ====
$object%%->%%**remove**()
Удалить элементы объекта
^Возвращает|true, если удаление успешно|boolean| |
==== reverse ====
$object%%->%%**reverse**()
Получить объект с обратной сортировкой элементов
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== save ====
$object%%->%%**save**()
Сохраняет элементы: все значения полей, свойства, родителей, порядок и алиасы
^Возвращает|true, в случае успеха| |
==== seekSiblings ====
$object%%->%%**seekSiblings**()
Получить массив объектов с элементами сгруппированными по ветке
^Возвращает|Массив объектов|[[ядро:w_object|[Объект]]]|
==== seekSimular ====
$object%%->%%**seekSimular**()
Получить массив объектов с элементами сгруппированными по классу
^Возвращает|Массив объектов|[[ядро:w_object|[Объект]]]|
==== tree ====
$object%%->%%**tree**(//params//,//force//)
Получить дочерние элементы. Если текущий объект содержит несколько элементов - в результирующем объекте окажутся дочерние элементы для каждого элемента.
^Аргумент^Описание^Тип^По-умолчанию^
|params|Условия выборки|[[ядро:w_object#селекторы|Селектор класса]]|[]|
|force|Не брать из кеша|boolean|false|
^Возвращает|Объект|[[ядро:w_object|Объект]]| |
==== unique ====
$object%%->%%**unique**()
Удаление дубликатов из набора
^Аргумент^Описание^Тип^По-умолчанию^
^Возвращает|true в случае успеха|boolean|
==== value ====
$object%%->%%**value**(//params//)
Получить единственное значение свойства
^Аргумент^Описание^Тип^По-умолчанию^
|params|id свойства, алиас свойства или условия выборки|[[ядро:w_property#поля_объекта|Поле id объекта w_property, Поле alias объекта w_property]],[[core:w_value#селекторы|Селектор w_value]]|[]|
^Возвращает|Выбранные свойства|[[core:w_value|Объект w_value]]|
==== values ====
$object%%->%%**values**(//params//)
Получить значение свойств
^Аргумент^Описание^Тип^По-умолчанию^
|params|id свойства, алиас свойства или условия выборки|[[ядро:w_property#поля_объекта|Поле id объекта w_property, Поле alias объекта w_property]],[[core:w_value#селекторы|Селектор w_value]]|[]|
^Возвращает|Выбранные свойства|[[core:w_value|Объект w_value]]|
==== valueAdd ====
$object%%->%%**valueAdd**(//property//,//value//)
Добавить одно значение свойства. Запись происходит после вызова функции [[ядро:w_object#save|save()]] или [[ядро:w_object#valueSave|valueSave()]]
^Аргумент^Описание^Тип^По-умолчанию^
|property|id или алиас свойства|[[ядро:w_property#поля_объекта|Поле id объекта w_property, Поле alias объекта w_property]] обязательный| |
|value|Значениe свойствa|string обязательный| |
^Возвращает|true, в случае успеха|boolean|
==== valuesAdd ====
$object%%->%%**valuesAdd**(//property//,//values//)
Добавить несколько значений свойства. Запись происходит после вызова функции [[ядро:w_object#save|save()]] или [[ядро:w_object#valueSave|valueSave()]]
^Аргумент^Описание^Тип^По-умолчанию^
|property|id или алиас свойства|[[ядро:w_property#поля_объекта|Поле id объекта w_property, Поле alias объекта w_property]] обязательный| |
|values|Массив значений свойства|[string] обязательный| |
^Возвращает|true, в случае успеха|boolean|
==== valueImplode ====
$object%%->%%**valueImplode**(//glue//,//params//)
Получить значения свойств и склеить их через разделитель
^Аргумент^Описание^Тип^По-умолчанию^
|glue|разделитель|string обязательный| |
|params|id свойства, алиас свойства или условия выборки|[[ядро:w_property#поля_объекта|Поле id объекта w_property, Поле alias объекта w_property]],[[core:w_value#селекторы|Селектор w_value]]|[]|
^Возвращает|Строка|string|
==== valueRemove====
$object%%->%%**valueRemove**(//property//,//values//)
Удалить значение свойства. Запись происходит после вызова функции [[ядро:w_object#save|save()]] или [[ядро:w_object#valueSave|valueSave()]]
^Аргумент^Описание^Тип^По-умолчанию^
|property|id или алиас свойства|[[ядро:w_property#поля_объекта|Поле id объекта w_property, Поле alias объекта w_property]] обязательный| |
|values|Удаляемые значения свойства. Если не указано - удалить все значения|string, [string]| |
^Возвращает|true, в случае успеха|boolean| |
==== valueSave ====
$object%%->%%**valueSave**()
Сохраняет значения свойств
^Аргумент^Описание^Тип^По-умолчанию^
^Возвращает|true, в случае успеха|boolean| |
==== valueSet ====
$object%%->%%**valueSet**(//property//,//value//)
Заменить значения свойства на одно значение. Запись происходит после вызова функции [[ядро:w_object#save|save()]] или [[ядро:w_object#valueSave|valueSave()]]
^Аргумент^Описание^Тип^По-умолчанию^
|property|id или алиас свойства|[[ядро:w_property#поля_объекта|Поле id объекта w_property, Поле alias объекта w_property]] обязательный| |
|value|Значениe свойства|string обязательный| |
^Возвращает|true, в случае успеха|boolean| |
==== valuesSet ====
$object%%->%%**valuesSet**(//property//,//values//)
Заменить значения свойства на несколько значений. Запись происходит после вызова функции [[ядро:w_object#save|save()]] или [[ядро:w_object#valueSave|valueSave()]]
^Аргумент^Описание^Тип^По-умолчанию^
|property|id или алиас свойства|[[ядро:w_property#поля_объекта|Поле id объекта w_property, Поле alias объекта w_property]] обязательный| |
|values|Значения свойства|[string] обязательный| |
^Возвращает|true, в случае успеха|boolean| |
==== valueSum ====
$object%%->%%**valueSum**(//params//)
Получить значения свойств и вычислить их сумму
^Аргумент^Описание^Тип^По-умолчанию^
|params|id свойства, алиас свойства или условия выборки|[[ядро:w_property#поля_объекта|Поле id объекта w_property, Поле alias объекта w_property]],[[core:w_value#селекторы|Селектор w_value]]|[]|
^Возвращает|Сумму свойств|float|