Обновить
43
45.2
Александр Шульман@developer

Развиваю ИТ

Отправить сообщение
да, вы правы, в таблице наследования класса все есть, учитывая что на нее ссылается каждый экземпляр, то действительно на этапе исполнения нет наклодных расходов вовсе. Что-то я протормозил. Спасибо.
не, переписывать все вызовы нада. не автоматизировано
простите, но чуш сказали полную. В реально жизни нет времени писать Доки, но есть время писать самодокументируемый код.
на этапе выполнения опкода виртуальной машиной интерфейсы уже не нужны.

нужны, пример:
intarface B…
if ($obj instanceof B){} — заранее не известно что будет жить в $obj
поэтому я и писал
это в основном проверки на этапе компиляции и редко на этапе исполнения.
вы не внимательный читатель. я не сравниваю (а что нужно сравнительный анализ сделать технологий и решений?) я рассказываю что на эту тему всегда есть люди, готовые поспорить и привожу топ причин для споров.
вообще многие шаблонизаторы поддерживают рекурсивный инклюд под шаблона. В ZF и Quicky Есть хелперы — функции вывода.
а вообще автору спасибо за топик. Мало где обсужается что-то действительно полезное, в основном обсасываются общеизвестные вещи
пожалуй нужно пояснить почему тут не обойтись просто наследованием от абстрактного класса. Рассмотрим задачку кеширования: например у нас есть Observer который следит за состоянием кеша (задачи прегенерации, задачи логирования и т.д.) и много маленьких разнопрофильных клиентов. Кто-то из клиентов, например, меняет состояние кеша и просит обсервер всех уведомить, что кеш нужно сбросить.
Понятно, что все клиенты отвечают за разные части системы и потому держать в основании дерева их классов ObserverClient не целесообразно.
А так например у нас есть готовый модуль (class A) и мы говорим: теперь эта сущность (наш модуль) тоже научилась работать c нашим сервером кеша (class ACached extends A implements CacheClient)

простите, что примеры немного искуственными кажутся, просто полностью раскрывать задачи занятие не для часу ночи.

Но суть такова: интерфейсы необходимы для стандартизации, а ее нельзя достичь простым наследованием т.к. объекты по своей природе не наследуются от одного родителя (например разнопрофильные сторониие библиотеки).
спасибо, что смогли тут написать. Очень трудно всю информацию подбить в одно место, а не размазывать по топикам.
ДУПА дал ответ. habrahabr.ru/blogs/php/45651/#comment_1159897
Но лично я считаю что нужно использовать квик (сейчас сайт не доступен, но можно получить копию у меня (пишите в личку)).
а вообще использование таких вложенных структур осуждается, хотя я лично использую
сории сайт квика пока не доступен. Если нужен могу дать. Пишите в личку
вот вы в топике HolyWar: Шаблонизаторы. Нужны ли они? состоятельны ли они? Форум. задайте вопрос — я вам отвечу как решать эти проблемы.
да, использую, особенно когда в команде работаю с 2-мя и более программистами, при помощи интерфейсов очень просто стандартизировать поведение. Ну например (вымышленный) сделай мне шаблонизатор который реализует интерфейс
implements Templater{
public function assign($name, $value);
}

ну или есть у вас в системе Observer, вам скармливают объект-слушающий, а у вас стандартизирован вызов:
Observer::add = public function(ObserverClient $obj);

в основном в таком контексте: тоесть для формализации ТЗ и интерфейса доступа.
я вот прочитав опрос все понял сразу.
В том то и дело. Мне вообще не понятны эти утверждения насчет скоростей. Боюсь, что если копать, то окажется что это не аргумент основной, а основной другой.

как показывает опыт интерфейсы незаменимы при стандартизации интерфейсов. Таким образом вы готовите почву для рефакторинга и проведя его вы как правило получите выигрыш в скорости намного больший чем экономя на них. я не говорю даже о устойчивости кода, о наглядности (засчет выделения абстракций), о скорости нахождения лог.ошибок.
покажите ваш тест. Аксерелератор так вообще сведет в 0 доп накладные расходы на которые на этапе сборки.
у вас декоратор тут а не наследование
неправду говорите, особено в слове сильно. ибо интерфейсы — это в основном проверки на этапе компиляции и редко на этапе исполнения. Нельзя ж так обманывать
К счастью ен проблема найти крек
ну зато парсер сменят потом и все будет работать просто на ура.

Информация

В рейтинге
170-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Генеральный директор
Ведущий
От 3 000 000 ₽
Управление проектами
Ведение переговоров
Разработка ТЗ
Agile
Управление разработкой
Оптимизация бизнес-процессов
Организация бизнес-процессов
Построение команды
Стратегическое планирование
Развитие бизнеса