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

    +157

    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
    /**
     * Experiments...
     */
    class poltergeist {
    
    	private $className;
    	private $methods;
    
    	function  __construct() {
    
    		$this->className=array(
    			'page',
    			'source',
    			'user',
    			// etc
    		);
    
    		foreach ($this->className as $v) {
    
    			$this->$v = new $v();
    			$this->methods[$v] = get_class_methods($v);
    		}
    	}
    
    	function __call($name, $arg){
    
    		if ( ($k=$this->arraySearch( $name )) ) {
    
    				return $this->$k->$name($arg);
    		}
    	}
    
    	function arraySearch( $name ){
    
    		foreach ( $this->methods as $k=>$v ) {
    			if ( in_array( $name, $v) ) return $k;
    		}
    	return false;
    	}
    }

    Откопал вот...

    Запостил: istem, 01 Октября 2011

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

    • показать все, что скрытоМысль полтергейст пояснять будет?
      Ответить
      • Хотелось отказаться от жёсткой вертикали наследования объектов и реализовать управляющий объект таким образом, чтобы все подчинённые ему объекты были в пределах видимости друг друга. Примерно, вот как на картинке:
        http://i030.radikal.ru/1110/f2/c1145181a211.jpg
        Если бы не зверское расходование памяти
        Ответить
        • что-то отдаленно напоминающее partial classes?
          Ответить
          • ну собственно так и есть...
            Ответить
            • может, http://habrahabr.ru/blogs/php/107682/ будет более полезно в данном случае?
              Ответить
              • Кажется там немного мягко накодировано...
                Ответить
                • вообще да, код мне там тоже не нравится.
                  но сама идея примесей...
                  Ответить
                  • Там ещё не очень понравилось то, что реализуется доступ к защищённым полям класса. Всё таки какая-то тайна должна быть :)
                    Ответить
                    • тайна должна быть приватной. а защищенные - доступны внутри "винегрета".
                      к слову, в джаве тоже защищенные поля и методы видны классам пакета
                      Ответить
      • Поясните мысль.
        Ответить
    • >__call
      Функторы в пхп?
      Ответить
    • показать все, что скрытоvanished
      Ответить

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