Проблема типов в функции параметра


При запуске следующий код:

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, какой параметр я должен поставить, чтобы эта функция работала правильно?

я Думаю, что это ошибка, должно быть лучше объяснено.

Author: Maniero, 2014-01-24

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

 6
Author: Zuul, 2020-06-11 14:45:34