НАЧАЛО >> Руководство пользователя >> API модуля Database для PHP-кода📄 Скачать в DOCX
Раздел предназначен для разработчиков модулей ИРБИС 128, которые обращаются к модулю Database из PHP-кода. Он фиксирует рекомендуемый способ получения типизированного экземпляра модуля и тип объекта базы данных, возвращаемый фабричными методами.
Для нового кода можно использовать статический метод Database::getInstance():
$database = Database::getInstance();
Метод возвращает тот же экземпляр модуля Database, который раньше обычно получали через UseModule('Database'), но его сигнатура явно указывает тип Database. Это помогает среде разработки видеть методы модуля, проверять сигнатуры и подсказывать доступные операции.
Старый способ остается совместимым:
$database = UseModule('Database');
Если код должен явно работать с модулем Database, предпочтительнее использовать Database::getInstance(). Если имя модуля выбирается динамически, остается применимым UseModule($moduleName).
Фабричный метод Database::GetNew() возвращает объект ObjectDataDatabase:
$db = Database::getInstance()->GetNew();
ObjectDataDatabase наследуется от ObjectData, поэтому существующий код, ожидающий обычный объект данных, продолжает работать. При этом у объекта базы данных описаны специализированные свойства и методы, например Name, Description, ProviderType, IsOpen, IsRO, GetIni(), GetTermList(), RecRead(), Search(), SaveAndUpdateRecord().
GetNew() создает новый объект базы данных, но сам по себе не открывает существующую БД. Для получения уже настроенной базы по имени используйте методы открытия БД, например:
$ibis = Database::getInstance()->Get('IBIS');
Возвращаемое значение в этом случае имеет тип ObjectDataDatabase|null: при ошибке открытия или неизвестном имени БД может быть возвращен null.
Database::getInstance() в новом коде, когда нужен именно модуль Database.null, перед обращением к объекту БД.Database::getInstance()->GetNew().Database::getInstance()->Get($name) или доменные методы, которые уже возвращают ObjectDataDatabase.ObjectDataDatabase обычным ObjectData, если дальше используются свойства или методы базы данных: типизированный объект дает более точный контракт и уменьшает риск ошибки при сопровождении кода.