Документация Хранилище объектов

При создании дополнений вам потребуется сохранять и накапливать изменяемые данные. В системе быстрой разработке Expelex предусмотрено хранилище объектных данных (словарей или хэш-массивов).

object_save() - Сохранение объекта в базе

object_get() - Получение объектов из базы


Сохранение объектов

object_save($collection[,$type][,$foreign_key]) - Общий вид вызова для сохранения объекта

$collection - Сохраняемый объект (число, строка, массив, коллекция)

$type - Тип объекта данных (например user, order, element).

$foreign_key - Внешний ключ для связки данных. Можно предварительно назначить ID или другой идентификатор. Связка $type + $foreign_key является уникальной, и если она повторяется, то объект будет перезаписан.

Пример:

<?php
$my_object=array (
"some_string"=>"Hello world!",
"number"=>123,
"my_array"=> array(1,2,3),
"include_collection"=>array("two"=>2)
);

$uid=object_save($my_object,"test");

print $uid; //Ответ будет 1. Это обозначает, что строке присвоился идентификатор 1, при следующем сохранении будет 2
//В результате будет сохранен объект в ветке test


Получение объектов из базы

object_get($where) - Общий вид вызова

$where - Массив запроса.


Простые фильтры

$where[''''type'''']=''''test'''';  //Выведет все объекты в этой ветке

$where[''''uid'''']=22; //Выведет объект с номером 22, рекомендуется использовать вместе с указанием type

$where[''''foreign_key'''']=123; //выведет объект по ключу


Сложные фильры

При сложных сортировках можно использовать элементы внутри массива на тех же уровнях. Фильтрация произвоится математическими или логическими операторами, оператор указывается в качестве ключа следующего уровня массива. Поддерживаемые операторы : =, !=, >, >=, <, <=, in, not in. Если необходимо сделать фильтрацию по нескольким полям, то условия фильтрации будут складыватсья как

Пример 1

<?php

$where["number"]["<"] = 5;

$objects=object_get($where);

print_r($objects);
/* Ответ
Array (
[1] => Array (
[number] => 123
[my_array] => Array (
[0] => 1
[1] => 2
[2] => 3
)
[some_string] => Hello world!
[include_collection] => Array (
[two] => 2
)
)
)
*/


Пример 2

<?php

object_save(
array(
"user"=>array(
"name"=>"Andrey",
"role"=>"admin"
)
),
"users"
);

object_save(
array(
"user"=>array(
"name"=>"Ivan",
"role"=>"superadmin"
)
),
"users"
);

object_save(
array(
"user"=>array(
"name"=>"David",
"role"=>"user"
)
),
"users"
);


$where["type"]="users";//Ограничиваем набор
$where["user"]["role"]["in"]=array("admin","superadmin");//Фильтруем по вхождению в массив

print_r(object_get($where));

/*Ответ
Array (
[1] => Array (
[user] => Array (
[name] => Andrey
[role] => admin
)
)
[2] => Array (
[user] => Array (
[name] => Ivan
[role] => superadmin
)
)
)
*/