Это действительно вопрос мнения.
Вот PHP DOC BLOCK, который вышел из моего ORM. Это часть большого автоматически сгенерированного кода ORM. Я написал код из дампа MySQL, используя скрипт php. Программа PHP ORM
/**
*
* $argv = [
* 'select' => [
* '*column name array*', 'etc..'
* ],
*
* 'where' => [
* 'Column Name' => 'Value To Constrain',
* 'Defaults to AND' => 'Nesting array switches to OR',
* [
* 'Column Name' => 'Value To Constrain',
* 'This array is OR'ed togeather' => 'Another sud array would `AND`'
* [ etc... ]
* ]
* ],
*
* 'pagination' => [
* 'limit' => (int) 90, // The maximum number of rows to return,
* setting the limit explicitly to 1 will return a key pair array of only the
* singular result. SETTING THE LIMIT TO NULL WILL ALLOW INFINITE RESULTS (NO LIMIT).
* The limit defaults to 100 by design.
*
* 'order' => '*column name* [ASC|DESC]', // i.e. 'username ASC' or 'username, email DESC'
*
*
* ],
*
* ];
*
*
* @param array &$return
* @param string|null $primary
* @param array $argv
* @return bool
*/
public static function Get(array &$return, string $primary = null, array $argv) : bool
{
... SEE LINK ...
}
В этом случае использования вызывающая функция или метод фактически получает два ответа. Содержимое переменной $ return было передано по ссылке, так что если теперь в нем могут содержаться разные данные, и успешное выполнение базы данных для доставки ответа было получено с помощью bool return.
В вашем случае, если бы я был вынужден создать метод, подобный представленному, я бы не дал значение Nullable. Я бы предположил, что данные были успешно возвращены из БД, и если бы это не было INT, я бы пошел вперед и сделал бы его 0. Я бы выбрал эту опцию, потому что это означает меньше проверки типов в вызывающих функциях. Если бы null должен был символизировать что-то еще, я мог бы увидеть причину, разрешив :? Bool . Однако я надеюсь, что с помощью приведенного выше фрагмента кода вы сможете найти лучшую альтернативу для ORM.
Лично я могу использовать возможный обнуляемый ответ, когда у меня есть три возможных возврата для функции. Это почти никогда не происходит в веб-разработке, но все время в рекурсивном программировании.