-
Notifications
You must be signed in to change notification settings - Fork 11
Compat
Новые версии библиотеки стараются сохранять обратную совместимость со старыми. Но иногда, совсем уж старое и редко используемое может удаляться.
Если очень-очень надо, можно включить старое поведение с помощью статического класса Compat:
Compat::setOpt('null', false);Или с помощью параметра _compat:
$params = [
'_adapter' => '_mysql',
'host' => 'localhost',
'_compat' => [
'null' => false,
],
];Настройки, указанные в параметре _compat имеют для этого конкретного объекта приоритет над глобальными. указанными через Compat::setOpt().
Единственный на данный момент параметр - null.
По умолчанию он равен TRUE, что означает "добавлять модификатор null ко всем плейсхолдерам".
В старых версиях библиотеки, по умолчанию, если во входных данных был NULL, он рассматривался просто, как пустое значение:
$pattern = 'UPDATE `table` SET `a`=?, `b`=?i';
$data = [null, null];
$db($pattern, $data); // UPDATE `table` SET `a`="", `b`=0Чтобы NULL из PHP приводился к NULL в SQL нужно было добавить к плейсхолдерам модификатор n (или null в полной форме):
$pattern = 'UPDATE `table` SET `a`=?n, `b`=?in';
$data = [null, null];
$db($pattern, $data); // UPDATE `table` SET `a`=NULL, `b`=NULLВ новых версиях эта чепуха исправлена и NULL всегда приводится к NULL.
Модификатор n остался, но он ничего нового не привносит.
Compat::setOpt('null', false) включает старое поведение.