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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if(count($MenuItem)>4) 
    {
    	$CONDITION = $MenuItem[4];
    	if(strlen($CONDITION)>0 && (!eval("return ".$CONDITION.";")))
    		$bSkipMenuItem = true;
    }

    1С-Битрикс: Управление сайтом 11.0.3

    Запостил: tolic811, 31 Января 2012

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

    • Находчиво.
      А для 5,6,7 и тд тоже код есть?
      Ответить
    • Боря, ты уже дошел до кондиции?
      Ответить
    • А как интерпретатор в таком случае отреагирует, выполнит return или проигнорирует?
      Ответить
      • Выполнит return, его значение вернёт eval(). При, например $CONDITION = 'true && !false'
        eval('return '.$CONDITION.';') равноценно просто выражению (true && !false)
        :) Интересно, у них есть кто-нибудь, кто ревизирует код?
        Ответить
        • В смысле eval выполняется вне контекста функции? Просто я предположил, что если return выполнится в контексте функции, то она "закончится". Т.е. выполнение перейдет вниз по стеку.
          Ответить

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