Проблема типов в функции параметра
При запуске следующий код:
function foo(string $text) {
echo $text;
}
foo('bar');
я Получаю следующее сообщение об ошибке:
PHP Catchable fatal error: Argument 1 passed to foo() must be an instance of string, string given, called in /home/...
Я был заинтригован, потому что раньше никогда не делал с Strings
, я всегда с Array
и это сработало.
Вопрос
Ошибка произошла потому, что метод просил экземпляр string
, но 'bar'
" не является экземпляром string
? 'bar'
" не является экземпляром string
, какой параметр я должен поставить, чтобы эта функция работала правильно?
я Думаю, что это ошибка, должно быть лучше объяснено.
1 answers
В соответствии с документации:
Type hints can not be used with scalar types such as int or string. Resources and Traits are not allowed either.
" просто, ты не можешь заставить параметр для типа string
", быть скалярным типом, который не поддерживается.
Примечание: Эта информация не содержится в англоязычной версии руководства, не знаю почему так важно, но говорит :
...Функции могут заставить что параметры являются объектами ... или массив...
, Который в некотором смысле тоже говорит нам, что string
не входит.
Редактирование:
, Чтобы проверить, что это - string
, как показано в примере, что от этого, только старомодный:
function foo($text) {
if (is_string($text))
echo $text;
else
echo "Aqui só strings amigo!";
}
" Или, как видно в разделе чей ссылке (Английском языке) был помещен в комментариях:
function foo($text) {
if (!is_string($text)) {
trigger_error('No, you fool!');
return;
}
...
}
Ссылка была любезно предоставлена @LuizVieira