ФорумПрограммированиеPHP для идиотов → Interfaces...

Interfaces...

  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 1 октября 2009 г. 23:43

    Тольк что наткнулся на такую конструкцию:

    interface iSome
    {
    public function sm();
    const a='gooogle';
    }

    echo iSome::a

    class Some implements iSome
    {
    public function sm ()
    {
    echo 'OLOLO!!!';
    }
    }


    Ктонибудь пользуется этим? Есть ли от этого вообще польза? =)
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 2 октября 2009 г. 0:12, спустя 29 минут 20 секунд

    Есть ли от этого вообще польза? =)


    от чего? от применения интерфейсов вообще?
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 2 октября 2009 г. 0:29, спустя 17 минут 3 секунды


    Есть ли от этого вообще польза? =)


    от чего? от применения интерфейсов вообще?
    Да, именно от применения их в PHP
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 2 октября 2009 г. 6:25, спустя 5 часов 55 минут 36 секунд

    в интерфейсе просто перечисляешь что должен делать класс, а не как он должен это делать. помоему это хороший ООП
    ιιlllιlllι унц-унц
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 2 октября 2009 г. 6:42, спустя 16 минут 58 секунд

    вот этот изъеб "echo iSome::a" это конечно бессмысленно
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 октября 2009 г. 10:56, спустя 4 часа 13 минут 55 секунд

    интерфейс - ахуенная вещь. это в пхп нет типизации и интерфейс с виду нахуй не нужен, но когда ты пишешь в строготипизированном языке, где нельзя написать

    void exec(object obj)
    {
    obj.method();
    }

    ибо у тебя компилятор нахуй пошлет и тп, ибо базовый объект object не имеет метода method, а если например мы будем принимать

    void exec(IMathodable obj)
    {
    obj.method();
    }

    то такое проходит как дважды два :)

    ибо мы ЖДЕМ объект, я реализаующий интерфейс IMethodable и знаем что у него есть метод method,а раз он реализует этот интерфейс то очевидно что метод можно вызвать :)

    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 2 октября 2009 г. 12:37, спустя 1 час 41 минуту 3 секунды

  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 2 октября 2009 г. 20:26, спустя 7 часов 49 минут 21 секунду

    rider-sx, почитай что-нибудь про паттерны (необязательно применительно к PHP), сразу увидешь кучу примеров применения интерфейсов.

    интерфейс - ахуенная вещь. это в пхп нет типизации и интерфейс с виду нахуй не нужен, но когда ты пишешь в строготипизированном языке, где нельзя написать

    ну частично-то есть, т.е. можно же обозначать аргументы функций определенными классами:
    function (MyInterface $my) { … }

    да и для простых типов вроде бы предполагаются (правда хз когда) какие-то обертки, но пока кроме упоминания в мане я про них ничего не нашел (ебать, там даже енумы должны быть!).

    Кстати, про строготипизированные языки — недавно на хабре писали про Java 7:
    Поддержка JSR 292 (динамическая типизация на уровне языка)

    Для поддержки динамической типизации вводится новый тип java.dyn.Dynamic. Пример использования:

    Dynamic x = (any type of expression can go here); 
    Object y = x.foo("ABC").bar(42).baz();


    Этот код всегда будет компилироваться, но выдаcт run-time exception, если указанные методы будут отсутствовать в переменной типа Dynamic.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 октября 2009 г. 8:37, спустя 12 часов 11 минут 13 секунд

    не люблю яву
    Сапожник без сапог
  • rider-sx

    Сообщения: 2706 Репутация: N Группа: Адекваты

    Spritz 3 октября 2009 г. 8:57, спустя 19 минут 57 секунд

    Timur, спасибо =) почитал книгу про С++ стало ясно для чего же эти интерфейсы нужны.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!