powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Как выйти из функции с помощью eval
17 сообщений из 17, страница 1 из 1
(PHP) Как выйти из функции с помощью eval
    #33349183
Roman Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PHP
Имеется такой код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?php
	function evaling()
	{
		echo "in evaling : this is code start<br>";
		eval("!!!");
		echo "in evaling : this is code after return<br>";	
  }

	evaling();             
	echo "this is main code after calling evaling()";
?>

В этом коде ничего менять не можем, окромя ! параметра, передаваемого функции eval.
Нужно
вместо "!!!" в параметре eval написать ?что-то, чтобы завершилось выполнение функции evaling, но не всего скрипта, т.е. получить на выхлопе

Код: plaintext
1.
in evaling : this is code start<br>
this is main code after calling evaling()

return не срабатывает. Срабатывает exit, но тогда заканчивается выполнение ВСЕГО скрипта...

Помогите, спецы, плз !
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33349271
Roman Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Added

Либо, если такое возможно (тихо сам себе - мда...), пропустить N строк кода, или пропустить все строки до конца функции.
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33349455
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Roman Y.В этом коде ничего менять не можем, окромя ! параметра, передаваемого функции eval.Этот код лишён смысла. Нет ни одной задачи, где применение eval - необходимость. Проблема скорее всего в неправильном проектировании приложения.
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33350206
Ksnk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот такое никак не подойдет-
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function evaling()
{
     echo "in evaling : this is code start<br>";
     if (eval("return FALSE;")) {
         echo "in evaling : this is code after return<br>";
     }
}
Хотя, конечно, интересно узнать а где-ж такое можно применить :)
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33350218
Roman Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Естественно, это не рабочий код, это пример, иллюстрирующий ситуацию.
Для подобных условий имеются веские причины.

Вариант исходных условий №2, если, конечно, это что-нибудь изменит
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?php
function evaling()
{
  echo "in evaling : this is code start<br>";
  eval("!!!1");
  echo "in evaling : this is code after return<br>";
  eval("!!!2");
}

evaling();             
echo "this is main code after calling evaling()";
?>

Изменить можно "!!!1" и "!!!2".
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33350225
Roman Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 KSNK

Нет, кроме оговоренного параметра ничего менять нельзя.

Применить эту штуку можно при написании плагинов к движку форума vBulletin 3.5.0.
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33350235
Roman Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В движке эта штука выглядит так
Код: plaintext
($hook = vBulletinHook::fetch_hook('threadmanage_action_switch')) ? eval($hook) : false; 
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33350394
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Roman Y.2 KSNK

Нет, кроме оговоренного параметра ничего менять нельзя.А он вам и не предлагал ничего менять. Он предлагал лишь по возвращённому eval'ом параметру определять, стоит продолжать дальше или же уже остановиться.
Код: plaintext
1.
2.
3.
if (vBulletinHook::fetch_hook('threadmanage_action_switch'))){
  if (false === $hook = eval($hook)) return;
}
else $hook = false;
Вместо false можно использоваться NULL или что удобнее.
PS: в любом случае - это корявость, к тому же можущая привести к дырам.
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33351147
Roman Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 *

Гм, насколько я вижу, он изменил код.
Дело в том, что сама суть плагинов для этого движка в том, что код менять не надо, просто жмешь на кнопочку и плагин устанавливается, и не надо лезть править код.
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33351158
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Roman Y.Гм, насколько я вижу, он изменил код.Он (с некоторыми оговорками) не изменил логику.
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33355915
Roman Y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В чем смысл не трогать код ?
Например, если выходит новый vBulletin, то при его установке все изменения затрутся. Если оформить как плагин, то все спокойно продолжит себе работать.
А если таких изменений в коде не одно, а 10? 100? И потом все это ручками восстанавливать ?

Смотрите шире :)
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33356059
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Roman Y.Смотрите шире :)У вас два варианта:
1. Смотреть шире и ждать манны небесной, когда она сама выпадет.
2. Делать так, как можно (можно подумать, что у вас есть альтернатива).
Хотя нет. Есть ещё один вариант. Наиболее правильный. Забить.
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33375957
iamyar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы, оставил, как есть.

2*
Конечно, если не хватает квалификации для ответа на четко заданный вопрос, хотя бы и отрицательного, то можно и посмеяться.

Естественно, раз нет вариантов, то сделал так, как можно. Просто есть стремление делать хорошо, если Вы понимаете, конечно, о чем я.
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33376273
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
iamyar2*
Конечно, если не хватает квалификации для ответа на четко заданный вопрос, хотя бы и отрицательного, то можно и посмеяться.Если у меня не хватает квалификации - не будете ли вы столь любезны, приведя здесь рабочее решение?Просто есть стремление делать хорошо, если Вы понимаете, конечно, о чем я.Хорошо - это не использовать eval где попало. Если вы поняли, о чём я ;)
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33376303
imyar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я задавал вопрос, чтобы получить ответ, и ни словом не обмолвился о своей квалификации.

А зачитать проповедь по поводу "использовать eval" и особо про "где попало" Вы можете на адрес, например, info@vbulletin.com . Думаю, разработчики лидирующего форумного движка прислушаются к Вашим советам.
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33376317
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
imyarЯ задавал вопрос, чтобы получить ответРазве вам не дали ответ? Так чего же вы ещё хотите?и ни словом не обмолвился о своей квалификацииА при чём тут ваша квалификация?А зачитать проповедьА зачем? Не я же пользуюсь их продуктом, а вы.
...
Рейтинг: 0 / 0
(PHP) Как выйти из функции с помощью eval
    #33377854
iamyar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ответ мне дали не Вы, в этой теме от Вас я увидел только отвлечённые рассуждения, не более.

Причина, по которой я акцентировал Ваше внимание на том, что я не упоминал о своей квалификации, являлось Ваше предложение мне не маяться дурью и делать так, как Вы сказали.

А коли уж Вы не использовали этот продукт, то, видимо, не в курсе возникающих проблем, и не Вам ставить под сомнение компетентность разработчиков оного. Предложил бы Вам при отсутствии ответа по существу не сворачивать на обсуждение мировых проблем.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Как выйти из функции с помощью eval
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]