![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| mark2009 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 12.10.2009 Репутация: нет Всего: 1 |
Доброго времени суток,
Итак... на борту PHP 5.4.3. Имеем следующий класс:
Проблемная функция user_exists. Дело в том, что в качестве аргумента должно передаваться числовое значение. PHP позволяет указать тип аргумента непосредственно в функции. Указываем... Если передаём в качестве реального аргумента строку, то получаем: Catchable fatal error: Argument 1 passed to user::user_exists() must be an instance of integer, string given, called in /wwwsites/forum/index.php on line 12 and defined in /wwwsites/forum/classes/class_user.php on line 82 НО: если передаём число, то получаем: Catchable fatal error: Argument 1 passed to user::user_exists() must be an instance of integer, integer given, called in /wwwsites/forum/index.php on line 12 and defined in /wwwsites/forum/classes/class_user.php on line 82 Где логика? Если я передал string - понятно. Но из второго сообщения я ровным счётом ничего понять не могу... integer должно передаться, integer и передалось что явствует из сообщения об ошибке... и всё равно выдаётся ошибка? Может быть я что-то не так делаю? |
|||
|
||||
| IBS |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 214 Регистрация: 29.7.2008 Где: Белоруссия Репутация: нет Всего: 6 |
php почти не знаю, но я думаю дело в том, что $user_id уже была объявлена в этом классе, т.е. в функции возникает неоднозначность
|
|||
|
||||
| mark2009 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 12.10.2009 Репутация: нет Всего: 1 |
IBS,
Если не знаете, зачем тогда пишете? Это всего лишь аргумент функции. Никакой неоднозначности нет. P.S. Код
даёт тот же самый эффект. |
|||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
а что даёт проверка is_int($user_id) и если заменить в сигнатуре integer на int
Это сообщение отредактировал(а) Sentox - 4.7.2012, 13:40 |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
вроде нерабочий функционал, хотя могу и ошибаться
-------------------- Amazing |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
если это массив или объект, а не скалярный тип. Вас не смутило слово instance?
тут Добавлено через 2 минуты и 49 секунд php язык весьма странный. похож на лоскутное одеяло, местами в дырках, но с новой подкладкой. хотя одеяло тёплое и симпатишное (особенно подкладка), но в дырки дует. |
|||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Ответ здесь
http://phpmaster.com/type-hinting-in-php/
В 5.4 не будет добавлена возможность скалярных величин. Хотя здесь http://habrahabr.ru/post/136800/ утверждает обратное. |
|||
|
||||
| SamDark |
|
|||
|
Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Скалярные величины не будут добавлены никогда. По крайней мере таково мнение Лердорфа.
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
видимо потому что это сводит на нет автоматические преобразования типа. конечно можно сохранить преобразования и добавить типизацию , но это приведет к усложнению синтаксиса. для интерпретируемого языка без встроенных средств предварительной компиляции это роскошь
|
|||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
А мне если честно не хватает несколько таких вещей иногда. Больше привык с однозначными переменными работать не жели преобразования.
|
|||
|
||||
| mark2009 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 12.10.2009 Репутация: нет Всего: 1 |
Понятно. Всем спасибо за ответы. Хотя мне, если честно, не хватило указания типа скалярной величины...
Ну ладно. Ещё раз всем спасибо. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |