Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указание типа параметра при объявлении функции 
:(
    Опции темы
Leklerk
Дата 2.10.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 31.7.2009
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Можно ли указывать типы параметров функции при объявлении функции? Например,
Код

function f_search(array $arr, integer $num, $str)
{
    // Тело функции
}

PM MAIL ICQ   Вверх
NLspieler
Дата 2.10.2009, 22:31 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: 16
Всего: 19



Кажется нет. 
А зачем?

PM MAIL   Вверх
Telepyz
Дата 3.10.2009, 01:37 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 9.7.2007

Репутация: нет
Всего: 1



в PHP тип указывать не нужно, он сам определяет его.!!!!
--------------------
обновить драйвер
PM MAIL   Вверх
youri
Дата 3.10.2009, 07:08 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



type hinting: можно указывать array (>= php 5.1) и название класса
PM   Вверх
Leklerk
Дата 3.10.2009, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 31.7.2009
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата

А зачем?

Чтобы нельзя было передавать данные не того типа.
PM MAIL ICQ   Вверх
Ипатьев
Дата 3.10.2009, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



А что будет, если передать не того? Fatal error? 
Не лучше ли будет внутри функции проверить тип и тогда уже кидать исключение?
PM MAIL   Вверх
NewDima
Дата 3.10.2009, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



NLspieler, когда только кажется, лучше молчи.
В добавок type hinting позволеят проверять соответствие интерфейсу
PM ICQ   Вверх
youri
Дата 3.10.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Ипатьев, т.е. ты думаешь для type hinting нету применения? Я думаю, он имеет смысл для пользователей класса/функции, чтобы они не ошиблись в своих заблуждениях о типах параметров (с расчетом на то, что все сразу выяснится). А если много проверять в начале функции, то будет много букафф. Писать программу, которая рассчитывает на ошибки создателя не вижу смысла. Тестировать тогда уж надо. Потому что слишком много чего можно проверить. В принципе из этого "слишком много чего" можно выбрать распространенные ошибки, но мне ничего в голову не приходит

Это сообщение отредактировал(а) youri - 3.10.2009, 14:40
PM   Вверх
Ипатьев
Дата 3.10.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



я думаю, что это, во-первых, syntax sugar (можно блин при желании передавать массив, тип-переменная)
а во-вторых, сдается мне, что автор, если про него вспомнить, имеет в виду не это.
PM MAIL   Вверх
youri
Дата 3.10.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



просто это какая-то нечеткая фраза syntax sugar... Имеешь в виду, что type hinting в общем-то не нужен? (кстати, такой fatal можно перехватить)

по поводу ТС. на его непосредственный вопрос ответили. После него должен был возникнуть очередной: а когда его использовать. 

Вот я и пытался свои мысли по этому поводу высказать. Пускай не type hinting, а непосредственная проверка в коде. Но когда она нужна? Вижу смысл оградить пользователя от вероятных ошибок (не от всех, а те, которые вероятны), например, передал массив, а нужен класс (коллекция или типа того). В расчете на то, что он их сразу заметит. Но он и без проверок их заметит скорее всего. В общем сомнительно, но придумал другую причину smile по названию... в определенных IDE можно будет во всплывающей подсказке сразу увидеть требуемый тип

Это сообщение отредактировал(а) youri - 3.10.2009, 18:20
PM   Вверх
nerezus
Дата 3.10.2009, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Кажется нет. 
 Можно только для объектов и массивов.

Цитата

А зачем?
 А зачем функция возведения в степень, если есть логарифмы?
Ответ: чтобы было удобно.

Цитата

А что будет, если передать не того? Fatal error? 
Не лучше ли будет внутри функции проверить тип и тогда уже кидать исключение?
 Fatal error - эту куда лучше, чем потенциальная ошибка.

Цитата

что это, во-первых, syntax sugar
 И что, это плохо? Вот ООП тоже через синтаксический сахар сделано. Но про это никто же не ругается?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
youri
Дата 4.10.2009, 05:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



Цитата(nerezus @  3.10.2009,  18:39 Найти цитируемый пост)
Fatal error - эту куда лучше, чем потенциальная ошибка.

а у тебя были случаи, когда type hinting не давал тебе совершить ошибку? При чем если бы ты не указал тип, то ошибка могла остаться незамеченной?
PM   Вверх
nerezus
Дата 4.10.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



youri, 
Цитата

а у тебя были случаи, когда type hinting не давал тебе совершить ошибку?
 Даже не не давал, а конкретно указывал, что делать.  Когда код не мой.

Цитата

 При чем если бы ты не указал тип, то ошибка могла остаться незамеченной?
 Вылезли бы ошибки непонятно где. Особенно если писал этот метод один человек, а использовал другой ;)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Ипатьев
Дата 4.10.2009, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(nerezus @  4.10.2009,  11:53 Найти цитируемый пост)
 Когда код не мой.

мне кажется, что type hinting - это подсказка программе, а не программисту smile
а программисту оно пишется в комментариях.


Это сообщение отредактировал(а) Ипатьев - 4.10.2009, 12:31
PM MAIL   Вверх
nerezus
Дата 4.10.2009, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Ипатьев, ну если тип указан - то мы сразу узнаем ошибку. Если не указан - то она может всплыть хрен знает где.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0530 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.