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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Interface и тип возвращаемого методом значения 
:(
    Опции темы
MyDarkSide
Дата 12.11.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



продолжаю погружаться в мир ООП на PHP5,
дошел до интерфейсов очень удобная штука, особенно когда надо написать что-то типа набора драйверов 
например для работы с БД, написал интерфейс указал какие методы должны реализовать драйвер, и отдаешь работу другим программистом.
Но как всегда ложка дёгтя: как другой программист узнает что он должен вернуть из метода ?
проверка типов для аргументов методов есть, а как указать, что должен возвращать метод ? 
Какая-то половинчатость получается.
PM ICQ   Вверх
vasac
Дата 12.11.2009, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Документация, комментарии, phpdoc?
PM WWW   Вверх
MyDarkSide
Дата 13.11.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



vasac, нет
слишком мягко
тогда и интерфейсы не нужны
PM ICQ   Вверх
nerezus
Дата 13.11.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



MyDarkSide, нужны.


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


Шустрый
*


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

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



nerezus,  сказал как отрезал, даже возразить нечего
PM ICQ   Вверх
skyboy
Дата 13.11.2009, 16:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(MyDarkSide @  12.11.2009,  15:07 Найти цитируемый пост)
проверка типов для аргументов методов есть, а как указать, что должен возвращать метод ? 

а если метод может возвращать null, объект класса TItem или объект класса TItemsCollection в зависимости от входящих параметров, то как ты представляешь "органичение типа"?
интерфейсы используются не для ограничения логики работы класса(в том числе - ограничения на тип результата работы метода), а для того, чтоб гарантировать наличие некоторых методов. 
PM MAIL   Вверх
MyDarkSide
Дата 13.11.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(skyboy @  13.11.2009,  16:50 Найти цитируемый пост)
а если метод может возвращать null, объект класса TItem или объект класса TItemsCollection в зависимости от входящих параметров, то как ты представляешь "органичение типа"?

в этом случае я не буду указывать никаких ограничений с аргументами это делается так
Код

Interface Driver {
public function test($arg1, $arg2); 
}


а вот если метод должен однозначно вернуть мне например объект класса Database,я должен иметь возможность это указать
так же как для аргументов:
Код

Interface Driver {
public function test(Config $arg1, Exception $arg2); 
}


если класс не может вернуть нужный объект пусть бросает исключение
PM ICQ   Вверх
skyboy
Дата 13.11.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



а зачем такие сложности?
PM MAIL   Вверх
youri
Дата 14.11.2009, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(skyboy @  13.11.2009,  16:50 Найти цитируемый пост)
интерфейсы используются не для ограничения логики работы класса(в том числе - ограничения на тип результата работы метода), а для того, чтоб гарантировать наличие некоторых методов. 

основная причина - да, чтобы гарантировать наличие методов. Ограничение типов входных аргументов тоже может быть полезно, но это не причина для использования интерфейсов
PM   Вверх
vasac
Дата 15.11.2009, 18:36 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

int nevedomaya_yobanaya_fignya(int $x, int $y)

Здесь указаны типы аргументов и результата. Но как без документации это может помочь опрделелить, что должна делать функция?
PM WWW   Вверх
Simpliest
Дата 15.11.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(vasac @  15.11.2009,  17:36 Найти цитируемый пост)
Здесь указаны типы аргументов и результата

Эти указания типов не работают в PHP.

допустимы только array, имя Interface, имя class


--------------------
user posted image
PM   Вверх
nerezus
Дата 15.11.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Simpliest, ты документацию когда последний раз читал? Это формальное описание. А не синтаксическое.


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


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(Simpliest @  15.11.2009,  20:00 Найти цитируемый пост)
Эти указания типов не работают в PHP.

я не секретарь, но мне думается, что vasac намекал топикстартеру: ограничение типа возвращаемого результата никак не поможет разобраться с логикой работы метода.
PM MAIL   Вверх
Simpliest
Дата 16.11.2009, 04:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(skyboy @  15.11.2009,  20:47 Найти цитируемый пост)
ограничение типа возвращаемого результата никак не поможет разобраться с логикой работы метода

Я как бы против этого и не возражал smile

Цитата(nerezus @  15.11.2009,  20:28 Найти цитируемый пост)
Simpliest, ты документацию когда последний раз читал? Это формальное описание. А не синтаксическое. 

Очень давно, больше года назад smile

А что значит формальное описание? smile Где об этом упоминается в документации? smile


--------------------
user posted image
PM   Вверх
nerezus
Дата 16.11.2009, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Simpliest, это данные для программиста, а не для PHP. Задаются через phpdoc.
А в документации упоминается в каждой функции =)


--------------------
Сообщество художников 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.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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