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 :: Зачем нужны интерфейсы?
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Opposite, восновном для описания методов класса. Что бы в дальнейшем облегчить разработку приложения.
Так же даёт возможность определить дополнительные соглашения которым должен следовать класс. Любой класс который "заявляет" о поддержке того или иного интерфейса должен реализовывать все константы интерфейса, и обязан содержать реализацию всех функций данного интерфейса.
Opposite
Отправлено: 09 Марта, 2012 - 19:33:12
Гость
Покинул форум
Сообщений всего: 109
Дата рег-ции: Март 2012
В PHP это как реализуется? (Добавление)
Я так понимаю, никак, ибо не сталкивался ни разу.
Я писал интерфейсы, понял, что класс должен реализовать все его методы, вплоть до аргументов. Данные интерфейс хранить не может. Что за соглашения? Я вот этого не понимаю. Хочешь сказать, можно наложить условия на аргументы методов так, чтобы php генерировал предупреждение о несоответствии? Или как понимать фразу "соглашения" ?
alexiy
Отправлено: 09 Марта, 2012 - 19:53:54
Посетитель
Покинул форум
Сообщений всего: 483
Дата рег-ции: Янв. 2011
Помог: 6 раз(а)
насколько я знаю, в некоторых языках исключено множественное наследование, в связи с чем используются интерфейсы
Okula
Отправлено: 09 Марта, 2012 - 19:55:26
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Под словом "соглашение" как раз и понимается полное соответсвие аргументов и имён в классе реализующем данный интерфейс.
К тому же в дальнейшем можно проверять реализует данный класс какой-либо интерфейс. Делается это с помощью оператора instanceof (Добавление)
alexiy пишет:
насколько я знаю, в некоторых языках исключено множественное наследование, в связи с чем используются интерфейсы
Да, интерфейсы в PHP применяются как аналог множественному наследованию.
LIME
Отправлено: 09 Марта, 2012 - 19:57:57
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Покинул форум
Сообщений всего: 109
Дата рег-ции: Март 2012
Помог: 4 раз(а)
Okula пишет:
Да, интерфейсы в PHP применяются как аналог множественному наследованию.
Но интерфейсы же не позволяют реализовывать в своем теле методы? Какое может быть наследование? (Добавление)
Наследуют методы и поля, а интерфейс не позволяет в себе реализовать ни того, ни другого
Okula
Отправлено: 09 Марта, 2012 - 20:09:26
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Я и не говорю что они позволяют реализовать множественно наследование. Они являются аналогом, что не одно и то же.
Интерфейсы поддерживают множественное наследование, что позволяет более точно указать какие методы должны быть реализованы в данном классе.
Opposite
Отправлено: 09 Марта, 2012 - 20:11:52
Гость
Покинул форум
Сообщений всего: 109
Дата рег-ции: Март 2012
Помог: 4 раз(а)
Okay. Вроде понял.
Скажем так, они нужны другим прогерам для того, чтобы все работало корректно после того, как они засунут туда свои шаловливые ручонки (Добавление)
Абстрактные классы в этом плане мощнее будут, хотя и назначение у них разное ... абстрактные классы - это почти те же интерфейсы ( необходимо соблюдать соглашения ), которые предоставляют плюс ко всему общие методы и поля, которые можно перегружать. Правильно?
LIME
Отправлено: 09 Марта, 2012 - 20:15:39
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
хороший способ раздавать задания в команде
старший пишет интерфейсы и мальчики/девочки их реализуют
а пока суть да дело можно писать на их основе код зная какие методы будут
caballero
Отправлено: 09 Марта, 2012 - 20:23:36
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.