====== Объект 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|