Классы MarcRecord, RecordField и SubField

MarcRecord

Каждый экземпляр класса MarcRecord соответствует одной записи в базе данных ИРБИС. Он содержит следующие поля:

Поле

Тип

Назначение

database

string

Имя базы данных, из которой загружена данная запись. Для вновь созданных записей пустая строка

mfn

integer

Номер записи в мастер-файле. Для вновь созданных записей 0

status

integer

Статус записи: логически удалена, отсутствует (см. ниже)

version

integer

Номер версии записи

fields

array

Массив полей записи

Статус записи: набор флагов (определены как константы в PhpIrbis)

Имя

Число

Значение

LOGICALLY_DELETED

1

Логически удалена (может быть восстановлена)

PHYSICALLY_DELETED

2

Физически удалена (не может быть восстановлена)

ABSENT

4

Отсутствует

NON_ACTUALIZED

8

Не актуализирована

LAST

32

Последняя версия записи

LOCKED

64

Запись заблокирована на ввод

add($tag, $value=’’) – добавляет в конец записи поле с указанными меткой и значением. Возвращает добавленное поле, поэтому может использоваться для “цепочечных” вызовов методов, добавляющих подполя в это поле (см. пример ниже).

clear() – очищает запись (удаляет все поля). Возвращает $this.

decode(array $lines) – декодирование записи из протокольного представления.

encode($delimiter) – кодирование записи в протокольное представление.

fm($tag, $code=’’) – получение значения поля (или подполя, если задан $code) с указанной меткой. Если поле (или подполе) не найдено, возвращает null.

fma($tag, $code=’’) – получение массива значений полей (или подполей, если задан $code) с указанной меткой. Если поля (или подполя) не найдены, возвращает пустой массив.

getField($tag, $occurrence=0) – получение поля с указанной меткой (с учётом повторения). Если поле не найдено, возвращает null.

getFields($tag) – получение массива полей с указанной меткой. Если поля не найдены, возвращается пустой массив.

insertAt($index, RecordField $field) – вставка поля в указанную позицию.

isDeleted() – проверка статуса, не удалена ли запись.

removeAt($index) – удаление поля по указанному индексу.

removeField($tag) – удаление всех полей с указанной меткой.

reset() – сброс состояния записи, отвязка её от базы данных. Поля данных остаются при этом нетронутыми. Возвращает $this.

verify($throw=true) – проверяет, правильно ли сформирована запись (и все её подполя). При обнаружении ошибки бросает исключение, если $throw==true.

$record = new Irbis\MarcRecord();
$record->add(700)
    ->add('a', 'Миронов')
    ->add('b', 'А. В.')
    ->add('g', 'Алексей Владимирович');
$record->add(200)
    ->add('a', 'Заглавие книги');

RecordField

Поле

Тип

Назначение

tag

integer

Метка поля

value

string

Значение поля до первого разделителя

subfields

array

Массив подполей

__construct($tag=0, $value=’’) – конструктор поля.

add($code, $value) – добавляет подполе с указанными кодом и значением к полю. Возвращает $this, так что может испольоваться для “цепочечных” вызовов.

clear() – очищает поле (удаляет значение и все подполя). Возвращает $this.

decode($line) – декодирование поля из протокольного представления.

getEmbeddedFields() – получает массив встроенных полей из данного поля.

getFirstSubfield($code) – возвращает первое вхождение подполя с указанным кодом или null.

getFirstSubfieldValue($code) – возвращает значение первого вхождения подполя с указанным кодом или пустую строку.

insertAt($index, SubField $subfield) – вставка подполя в указанную позицию.

removeAt($index) – удаление подполя по указанному индексу.

removeSubfield($code) – удаление всех подполей с указанным кодом.

verify($throw=true) – проверяет, правильно ли сформировано поле (и все его подполя). При обнаружении ошибки бросает исключение, если $throw==true.

$field = new Irbis\RecordField(700);
$field->add('a', 'Миронов')
    ->add('b', 'А. В.')
    ->add('g', 'Алексей Владимирович');

SubField

Поле

Тип

Назначение

code

string

Код подполя (один символ!)

value

string

Значение подполя

__construct($code=’’, $value=’’) – конструктор подполя.

verify($throw=true) – проверяет, правильно ли сформировано подполе. При обнаружении ошибки бросает исключение, если $throw==true.

$subfield = new Irbis\SubField('a', 'Подполе A');

RawRecord

Запись с нераскодированными полями/подполями.

Поле

Тип

Назначение

database

string

Имя базы данных, из которой загружена данная запись. Для вновь созданных записей пустая строка

mfn

integer

Номер записи в мастер-файле. Для вновь созданных записей 0

status

integer

Статус записи: логически удалена, отсутствует (см. ниже)

version

integer

Номер версии записи

fields

array

Массив полей записи в “сыром” виде