Как аргументы функции «массив», «строка» и «булево» работать в PHP?

Я делаю программу, которая будет принимать только логическое значение в качестве параметра. Я думал, что мог instanceof сделать это, но это не работает, как я ожидал.

function test (boolean $param) {
echo $param;
}
test(true);

Когда я использую его в своей программе, я получаю следующее сообщение об ошибке:

Аргумент 1, переданный в test (), должен быть экземпляром логического типа

Является instanceof правильный способ сделать это и как это работает?

0

Решение

В соответствии с руководство по объявлениям типов, заявлено, что вам нужно использовать bool вместо boolean при объявлении типа для логического значения. Для этого также требуется PHP-версия 7.0.0 или выше.

function test (bool $param) {}
test(true);

Если у вас версия PHP ниже 7.0.0, вы не можете использовать логическое объявление типа вообще. Однако вы можете проверить, был ли указан логический аргумент, используя is_bool($param)затем вернитесь false, null или вместо этого бросьте исключение, и действуйте таким образом. Вы также можете выдать предупреждение пользователя (по trigger_error()) если вы считаете это целесообразным.

3

Другие решения

Согласно документации вы обнаружите, что, в зависимости от версии PHP, доступные параметры изменяются: объявления типа

Если вы используете PHP 7.0, вы должны использовать bool, псевдонимы для скалярных типов не поддерживаются в объявлениях типов, они будут интерпретироваться как имена классов или интерфейсов.

Если вы используете PHP 5.0 — PHP 5.6, вы должны использовать объекты, которые определяют типы параметров, на которые вы хотите указать подсказку, вы найдете больше информации о подсказке типа Вот:

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector