Проверки (isFilled, isChanged, has)
- isFilled
Чтобы проверить, содержит ли объект актуальное значение из базы данных, используется метод isFilled:
use \Bitrix\Main\Test\Typography\Book;
// актуальными считаются значения из методов fetch* и wakeUp
// в примере при инициализации объекта передается только первичный ключ
$book = Book::wakeUp(1);
var_dump($book->isTitleFilled());
// false
$book->fillTitle();
var_dump($book->isTitleFilled());
// true
Метод isChanged отвечает на вопрос, было ли установлено новое значение в течение сеанса:
use \Bitrix\Main\Test\Typography\Book;
// объект может иметь исходное значение, а может и не иметь
// это не повлияет на дальнешее поведение
$book = Book::wakeUp(['ID' => 1, 'TITLE' => 'Title 1']);
var_dump($book->isTitleChanged());
// false
$book->setTitle('New title 1');
var_dump($book->isTitleChanged());
// true
Такое поведение справедливо и для новых объектов, пока их значения не сохранены в базу данных. - has
Метод has проверяет, есть ли в объекте хоть какое-то значение поля - актуальное из БД или установленное в течение сеанса. По сути, это сокращение от isFilled() || isChanged():