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

    +160

    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
    abstract class class_getset {
    	protected $vars;
    	
    	public function get($name = "%all%") {
    		if($name == "%all%") {
    			return $this->vars;
    		}
    		else {
    			return $this->vars[$name];
    		}
    	}
    	
    	/* тут второй метод, угадай его название */
    }

    Старый код из 2012, интересное решение ...

    Запостил: volter9, 25 Марта 2015

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

    • <a rel="chapter" href="http://govnokod.ru/php">PHP</a>

      Говно, уже начиная отсюда.
      Ну и, тут же, первая строчка самого говнокода просто уносит.
      Ответить
      • > Ну и, тут же, первая строчка самого говнокода просто уносит.
        Названием класса?
        Ответить
      • А не использовать ли нам трейты в новых пыхах?
        Ответить
        • Я тоже об этом думал, но думаю что этот класс все равно говно кодом останется.
          Ответить
    • Класс_кручу-верчу
      Ответить
    • Пихипишники добрались до функциональных линз
      Ответить
      • Хе-хе-хе. Всё же функцианальщики спёрли линзы у любителей гетиров/сеттеров.
        Ответить
    • тут второй метод, угадай его реализацию
      сплит по пробелам?
      Ответить
      • Не угадал, черная магия, is_array и foreach:
        public function set($name,$value,$extract = false) {
        	if(!is_array($value) || !$extract) {
        		$this->vars[$name] = $value;
        	}
        	else {
        		foreach ($value as $key => $content) {
        			$this->vars[$key] = $content;
        		}
        	}
        }
        Ответить
    • Как-то слабовато... Смотрите, как надо:
      public function get($name = "#\w+#") {
          $temp_array = $this->vars;
          array_walk($temp_array, function(&$item, $key) {
                  if (!preg_match($name, $key)) {
                       unset($item);
                  }
          });
          return $temp_array;
      }
      Ответить
      • Хотя тоже неуниверсально. Нужно придумать ещё фильтрацию по значению и SQL-подобный синтаксис для сложных условий, а то как-то просто получается.
        Ответить
        • > неуниверсально
          Может, eval?
          Ответить
          • Взрослые дяди говорят что eval это плохо, может рефлексию и удар ногой с разворота?
            Ответить

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