Получение данных из системы – одна из главных задач объекта Contenido::Keeper (или плагинных plugin::Keeper). Для быстрого доступа к объекту Keeper в Contenido::Globals создана глобальная переменная $keeper, доступная в любой компоненте. Можно напрямую обратиться в любом объекте при указании:
use Contenido::Globals;
Для получения необходимой выборки объектов, усеченных объектов, списков идентификаторов, произвольного набора полей или результата операции COUNT достаточно вызвать один из трех методов: get_documents, get_sections, get_links, передав им хеш параметров, который описывает, чего вы хотите получить. Структура вызова этих методов унифицирована и в итоге приводит к вызову get_items, так что можно ограничиться последним. Выбор того или иного метода – вопрос исключительно из области програбилити, повышающий читабельность кода.
get_documents
Производит выборку по прототипу Contenido::Document. Вызванный без параметров пытается выбрать и обернуть в объекты все содержимое таблицы documents. Для выборки из любой другой таблицы необходимо использовать параметры class или table. Подробности – ниже.
get_sections
То же самое, но по таблице sections. Данный метод уместно использовать именно для выбора секций. Во-первых, при чтении кода сразу становится понятно, что выбираются не документы, а секции. Во-вторых, только секции в системе не имеют кастомизации таблиц, так что get_sections, вызванный без указания класса, совсем не дикость, в отличие от get_documents или get_links.
get_links
То же самое, что get_documents, но при вызове без указания класса производит выборку из таблицы links.
get_items
Прототип вызова:
$keeper->get_items($proto, %opts);
$proto – один из классов, наследуемых от Contenido::Object, либо сам Contenido::Object.
%opts – список параметров для организации выборки из базы
get_objects
Напрямую апеллирует к get_items, передавая в качестве прототипа Contenido::Object. Может быть использован вместо get_documents.
_get_users
Метод для получения системных пользователей (тех, которые имеют доступ к интерфейсу админки) из таблицы users.
get_document_by_id, get_section_by_id, get_link_by_id, get_user_by_id
Прокси-методы, осуществляющие выборку единственного элемента, как нетрудно догадаться, по его id. Возвращают объект в единственном экземпляре. Пример вызова:
$keeper->get_section_by_id(1, class => 'Contenido::Section' );
get_object_by_id
Умный метод. Сначала ищет объект в $request->{_cache_}, потом в memcached (если включена поддержка, конечно), и только потом уже идёт в базу. Полученные из базы данные складывает в $request и в memcached.