Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ошибка при указании типа аргумента

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
morph-x
Отправлено: 04 Декабря, 2011 - 01:02:17
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Привет всем! Вот, что-то не могу понять одну проблему. Не работает такой простой скрипт:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.    
  3.     function display(string $string) {
  4.         echo $string;
  5.     }
  6.    
  7.     display('Hello, world!');
  8.  
  9. ?>

Выдает ошибку:

Цитата:
Catchable fatal error: Argument 1 passed to display() must be an instance of string, string given, called in *** on line 7 and defined in *** on line 3

Почему оно ошибку выдает? Это глюк PHP ил у меня где-то ошибка? Подскажите пожалуйста. Заранее спасибо!
 
 Top
Bio man
Отправлено: 04 Декабря, 2011 - 01:25:50
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




morph-x пишет:
у меня где-то ошибка?
да, вот тут
morph-x пишет:
function display(string $string)
можно указать только массив или имя класса. пхп пока не имеет строгой типизации

morph-x пишет:
must be an instance of string
говорит, что должен быть наследник от "string" (либо сам "string"). кароче пхп понемает это как имя класса

morph-x пишет:
, string given
а тут пишет, что именно вы передали, то есть пишет, что вы передали строку а не ожидаемый объект

(Отредактировано автором: 04 Декабря, 2011 - 01:29:46)

 
 Top
morph-x
Отправлено: 04 Декабря, 2011 - 01:44:25
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Bio man, спасибо! Жаль, что пхп не поддерживает строгой типизации, а было бы очень кстати... Я так понимаю, единственный выход - проверка типа внутри функции и генерация исключений?
 
 Top
ams
Отправлено: 04 Декабря, 2011 - 01:51:25
Post Id



Посетитель


Покинул форум
Сообщений всего: 351
Дата рег-ции: Нояб. 2010  


Помог: 13 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.     function display($string) {
  3.         echo (int)$string;
  4.     }
  5.    
  6.     display('1as25');
  7.     display('1234');
  8.  

Точно также и string...
 
 Top
Bio man
Отправлено: 04 Декабря, 2011 - 02:09:09
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




morph-x пишет:
Bio man, спасибо! Жаль, что пхп не поддерживает строгой типизации, а было бы очень кстати... Я так понимаю, единственный выход - проверка типа внутри функции и генерация исключений?
ну тебе судя по коду нужно строго передать строку, в таком случае не проверяй тип а внутри функции задавай тип. ф-ция settype() или если на лету то (string)$var
(Добавление)
morph-x пишет:
Жаль, что пхп не поддерживает строгой типизации
ага, жаль. будем надеятся, что в какой нибудь версии будет строгая типизация, например, в пхп7 Радость в 2050 году Ха-ха
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB