"PHP" / Говнокод #9268 Ссылка на оригинал

0

  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 tolic811, (Updated )

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

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

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8