Немного поработав с Java, я узнал, что там реализация интерфейсов не только следования неким правилам, но и еще введение дополнительной функциональности классу. Например, реализуя интерфейс Serializable мы позволяем классу быть сериализованным, реализуя интерфейс Comparable класс может быть отсортирован в коллекции и т.д. Есть что-то подобное в PHP, в частности, есть ли интерфейсы, методы которых позволили б объекту данного класса автоматически распаковываться в примитивный тип при проведении над ним операций.
Ярким примером автоматической распаковки является метод __toString, ели кто-то не понял, что я имел в виду.
Не совсем, интересует, могут ли интерфейсы расширять базовый функционал магических методов для тех или иных целей. Например (абстрактный пример): PHP: <?php class Int implements Packable { private $_Value; public function __construct ($value) { $this->_Value = $value; } //Магический метод автоматической распаковки, предусмотренный интерфейсом Unpackable public function unpack () { return($this->_Value); } } //Создание экземпляра $int = new Int(12); //Вызов распаковки $temp = $int + 1; Фактически приведение объекта к примитивному типу, этакая примитивная симуляция доопределения операторов. Есть ли что-либо подобное?
Вы имеете ввиду такое: Интерфейс Iterator и IteratorAggregate - http://ru.php.net/manual/ru/language.oop5.iterations.php Есть еще Countable и другие. Погуглите.