У меня на работе был такой напарник. Самое обидное что я его учил, делился всем что знаю, проверял его код, искал ошибки - помогал их исправлять. А в один прекрасный день он свалил в другую фирму где его конечно же приняли так как знал он уже немало. Даже не сказал мне что он уволняетса, об это я узнал за неделю до его ухода. Жалко теперь времени которое я на него потратил. Хотя есть и плюсы - научился правельно общатса с теми кто ниже тебя по уровню, своего рода шаг в сторону управляющего проектом.
О боже... ну давай тогда ещё приведём пример програмистов которые пичкают свои классы различными методами и считают что это ООП... может тогда вообще ООП в PHP поставить под сомнение и нивкоем случае не использовать потому что многие делают это неправельно?
Javscript это прежде всего СКРИПТ язык, да мощный скрипт язык, да с потдержкой ООП а точнее там всё что ты создаёш обьект, но он нетребует потдержки ООП такого уровня, во всяком случае раньше не требовал. В Pythone родной потдержки интерфэйсов нету, аля кейворда interface зато это не мешает их реализовывать в виде классов посмотри хотябы на интерфэйсы Zope.
Польза хотябы в том чтобы научить PHP програмистов лучше мыслить в ООП а это значит на всех совремменных языках програмирования. Раскажи лучше какой вред?
Интерфэйсы и Абстрактные классы в PHP похожи, но это не одно и тоже. Какже например instanceof ??? И вообще абстрактные классы пойдее могут определять тело методов(в PHP немогут) а интерфэйсы нет.
Интерефейс это один из результатов проектирования, проектирование это основаная часть программирования. Интерфэйсы делают код более прозрачным, логичным и понятным, и являютса правилами и направлением для логики. Есле вы пишите маленькие "скриптики" или даже "классики" то скорее всего вам они необъязательны. Но есле вдруг вы взялись за огромную работу которая требует гибкости кода, его возможной разширяемости и масштабируемости то интерфэйсы это то что вам скорее всего требуетса знать.
Самый распространённый пример применения интерфэйса это абстракция базы данных. Давайте представим для чего...?! В PHP есть полно расширений для работы с базами данных, для MySQL их не менее трех msql, msqli, pdo_msql и т.д. А ведь по сути нам всего нужно выбрать, обновить, вставить, удалить... что собственно говоря и являетса базовым интерфэйсом. Мы отделяем то что нам необходимо от того как это реализовано. Нам не надо знать как это реализовано мы знаем как это работает, а сама реализация может менятса десятки раз.
Советую почитать книжку PHP 5 Power Programming там очень просто и понятно всё написано.
Именно так это и называетса. В PHP нету множественного наследования классов, всмысле родной потдержки нету - эмулировать можно, зато есть множественное наследоваение интэрфэйсов.
Да это PHP. Можеш проверить... и я бы хотел услышать как ты это назовёш? ;)
class myFormField implements ArrayAccess, Iterator, Countable {
public function offsetExists($name) {}
public function offsetGet($name) {}
public function offsetSet($offset, $value) {}
public function offsetUnset($offset) {}
public function rewind() {}
public function key() {}
public function current() {}
public function next() {}
public function valid() {}
public function count() {}
}
Везде где я работал было так...
Самый распространённый пример применения интерфэйса это абстракция базы данных. Давайте представим для чего...?! В PHP есть полно расширений для работы с базами данных, для MySQL их не менее трех msql, msqli, pdo_msql и т.д. А ведь по сути нам всего нужно выбрать, обновить, вставить, удалить... что собственно говоря и являетса базовым интерфэйсом. Мы отделяем то что нам необходимо от того как это реализовано. Нам не надо знать как это реализовано мы знаем как это работает, а сама реализация может менятса десятки раз.
Советую почитать книжку PHP 5 Power Programming там очень просто и понятно всё написано.
http://www.informit.com/content/images/013147149X/downloads/013147149X_book.pdf
CSS RESET - для каждого отдельного случая должен быть свой - тоесть подправлен, подкоректирован.
http://microformats.org
class myFormField implements ArrayAccess, Iterator, Countable {
public function offsetExists($name) {}
public function offsetGet($name) {}
public function offsetSet($offset, $value) {}
public function offsetUnset($offset) {}
public function rewind() {}
public function key() {}
public function current() {}
public function next() {}
public function valid() {}
public function count() {}
}
http://reference.sitepoint.com/css/properties-alphabetic
Советую сделать шпаргалку на бумаге и положить себе на стол ;)