NERIS tLog

NERIS tLog


  • ООП. Интерфейсы

    Просто замечательный пример использования интерфейсов.
    Новичкам (и не только) читать обязательно!

    <?php
    
    /**
     * Интерфейс "смертный"
     */
    interface Killable
    {
        public function kill();
    }
     
    /**
     * Класс-убийца
     */
    class Killer
    {
        private $victims = array();
       
        /**
         * Добавляет жертву в список смертников
         */
        public function add(Killable $v)
        {
            $this->victims[] = $v;
        }
       
        /**
         * Убивает всех нафиг
         */
        public function killAll()
        {
            foreach( $this->victims as &$victim )
            {
                $victim->kill();
            }
        }
    }
     
    /**
     * Киса
     */
    class Cat implements Killable
    {
        public function kill()
        {
            echo "— Мяу<br/>\n";
        }
    }
     
    /**
     * Собачко
     */
    class Dog implements Killable
    {
        public function kill()
        {
            echo "— Гав<br/>\n";
        }
    }
     
    /**
     * Хуман
     */
    class Human implements Killable
    {
        public function kill()
        {
            echo "— АААА!!!!<br/>\n";
        }
    }
     
    /**
     * дункан маклауд из клана маклаудов
     */
    class DuncanMacLeod extends Human
    {
        public function kill()
        {
            throw new Exception('Я ж бессмертный, ёпте!');
        }
    }
     
    // тест
    $klr = new Killer();
    $klr->add(new Cat());
    $klr->add(new Dog());
    $klr->add(new Human());   
    $klr->add(new DuncanMacLeod());
    
    try
    {
        $klr->killAll();
    }
    catch( Exception $e )
    {
        echo "Нифига: «" . $e->getMessage() . "»\n";
    }
    
    
    
    

    Опубликовано 2 года назад

    Comments

    Метки: [coding] [юмор]

Мой сайт →
Подписаться
Спросите меня!

Популярные метки

  • Музыка
  • Юмор

©2010. Postage by Greg Cooper. Icons by P.J. Onori. Thanks to Jamie Cassidy & Panic.

Edited by Neris