Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Как выйти из функции с помощью eval / 17 сообщений из 17, страница 1 из 1
28.10.2005, 10:03
    #33349183
Roman Y.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как выйти из функции с помощью eval
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
28.10.2005, 10:34
    #33349271
Roman Y.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как выйти из функции с помощью eval
Added

Либо, если такое возможно (тихо сам себе - мда...), пропустить N строк кода, или пропустить все строки до конца функции.
...
Рейтинг: 0 / 0
28.10.2005, 11:42
    #33349455
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как выйти из функции с помощью eval
Roman Y.В этом коде ничего менять не можем, окромя ! параметра, передаваемого функции eval.Этот код лишён смысла. Нет ни одной задачи, где применение eval - необходимость. Проблема скорее всего в неправильном проектировании приложения.
...
Рейтинг: 0 / 0
28.10.2005, 15:28
    #33350206
Ksnk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как выйти из функции с помощью eval
А вот такое никак не подойдет-
Код: 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
28.10.2005, 15:31
    #33350218
Roman Y.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как выйти из функции с помощью eval
Естественно, это не рабочий код, это пример, иллюстрирующий ситуацию.
Для подобных условий имеются веские причины.

Вариант исходных условий №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
28.10.2005, 15:34
    #33350225
Roman Y.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как выйти из функции с помощью eval
2 KSNK

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

Применить эту штуку можно при написании плагинов к движку форума vBulletin 3.5.0.
...
Рейтинг: 0 / 0
28.10.2005, 15:37
    #33350235
Roman Y.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как выйти из функции с помощью eval
В движке эта штука выглядит так
Код: plaintext
($hook = vBulletinHook::fetch_hook('threadmanage_action_switch')) ? eval($hook) : false; 
...
Рейтинг: 0 / 0
28.10.2005, 16:25
    #33350394
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как выйти из функции с помощью eval
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
29.10.2005, 12:11
    #33351147
Roman Y.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) Как выйти из функции с помощью eval
2 *

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

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

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

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

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

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

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


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