1. PHP / Говнокод #5552

    +153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    abstract class Cover_Abstract_Simple implements Cover_Interface
    {
        protected $data = array();
    
        public function __get($key)
        {
            return isset($this->data[$key]) ? $this->data[$key] : null;
        }
    
        public function __set($key, $value)
        {
            $this->data[$key] = $value;
        }
    
        public function __isset($key)
        {
            return isset($this->data[$key]);
        }
    
        public function __unset($key)
        {
            unset($this->data[$key]);
        }
    
        public function getData()
        {
            return $this->data;
        }
    
        public function setData($data)
        {
            foreach ($data as $key => $value)
            {
                $this->$key = $value;
            }
        }
    
        public function clear()
        {
            $this->data = array();
        }
    
        public function __toString(){}
    }

    Запостил: qbasic, 06 Февраля 2011

    Комментарии (7) RSS

    • ух ты, Ковёр! т.е, гм, Обложка.
      а в чем говно? Ну разве что в избыточной архитектуре (вот это вот Abstract_Simple да еще и интерфейс Cover_Interface) - а так, обыкновенная "волшебная" обертка над массивом, коих туева хуча (к примеру, Zend_Session или Zend_Config)

      если бы тут вместо волшебных методов была бы имплементация ArrayAccess, тогда бы да.
      Ответить
    • не, все таки говно есть: __toString() должно все таки возвращать строку
      Ответить
      • Хотел было уповать, что это абстрактный класс, но ведь метод не абстрактный, поэтому соглашаюсь.
        Ответить
    • давайте каждый класс объявлять абстрактным, где нет абстрактных методов. и желательно несколько интерфейсов пихать.
      Ответить
    • в 34 любопытно...
      Ответить
      • Фишка пыха позволяет без всяких Reflection исполнять метод.
        Ответить
      • КО mode: это проделегируется в __set и изменит поле $data. Но если только $key не равно 'data', иначе это запорет все
        Ответить

    Добавить комментарий