Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Остановить скрипт из функции.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Возможно ли?
Jo
Отправлено: 30 Июня, 2011 - 20:33:53
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Hi all

Если кто сталкивался, подскажите решение, пожалуйста.

Структура такова:

Скрипт А --> include скрипт B --> function C


Нужно остановить скрипт B из функции C.
Было б идеально, если как-то можно из функции C передать "на исполнение" команду return в скрипт B.

return из В срабатывает. А из функции С (ЕСТЕСТВЕННО) срабатывает только для функции С.

Можно, конечно, после каждого вызова функции С прописать return, но их там много получается... Не хотелось бы.


PS exit() и die() не подходят, так как убивают и родительский скрипт A тоже.



Всем спасибо.

(Отредактировано автором: 30 Июня, 2011 - 20:43:05)

 
 Top
Slavenin
Отправлено: 30 Июня, 2011 - 20:36:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




не понял, а function C находится не в скрипт B? Не понял
 
 Top
Jo
Отправлено: 30 Июня, 2011 - 20:37:20
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




именно там
 
 Top
Slavenin
Отправлено: 30 Июня, 2011 - 20:39:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




Jo пишет:
Было б идеально, если как-то можно из функции C передать "на исполнение" return в скрипт B.

тогда фраза теряет смысл, так как return и так находится в скрипт B Не понял
 
 Top
Jo
Отправлено: 30 Июня, 2011 - 20:40:49
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




но он останавливает только функцию С.
 
 Top
Slavenin
Отправлено: 30 Июня, 2011 - 20:44:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




ниче не понимаю... инклюд подключает к А В , так как будто код из В был вставлен в А, в чем проблема то? может поконкретнее сформулировать задачу, на примере?
 
 Top
Jo
Отправлено: 30 Июня, 2011 - 20:49:12
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. <?php //SCRIPT A
  4.  
  5. include ("scriptB.php");
  6.  
  7. ?>
  8.  




CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php //SCRIPT B
  3.  
  4. C(); //потом идут другие команды, которые больше выполнять не нужно, если вызвалась функция С. Поэтому необходимо прервать исполнение В.
  5.  
  6. function C () { return; //это прерывает лишь функцию С.}
  7.  
  8. ?>
  9.  
  10.  

(Добавление)
короче, из С нужно остановить В.
все.

(Отредактировано автором: 30 Июня, 2011 - 20:52:41)

 
 Top
Slavenin
Отправлено: 30 Июня, 2011 - 21:48:20
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




приходит в голову два варианта, первый, почему бы не сделать if на тот код который не должен выполняться, второй это http://forum.php.su/topic.php?fo...1&topic=2022 , который строго НЕ РЕКОМЕНДУЕТСЯ ПРИМЕНЯТЬ!
 
 Top
OrmaJever Модератор
Отправлено: 30 Июня, 2011 - 21:53:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)






-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Jo
Отправлено: 30 Июня, 2011 - 22:20:34
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




OrmaJever пишет:


Читать первый пост, почему не подходит.
(Добавление)
Slavenin пишет:
приходит в голову два варианта, первый, почему бы не сделать if на тот код который не должен выполняться, второй это http://forum.php.su/topic.php?fo...1&topic=2022 , который строго НЕ РЕКОМЕНДУЕТСЯ ПРИМЕНЯТЬ!


Имплементируется (внедряется) готовый скрипт. Слишком много IF пришлось бы встраивать. Есть способ проще - просто вставить return после каждого вызова С - да и то стараюсь избежать...
Второй способ ща почитаю, но предисловие уже пугает... Улыбка

...

Ба-ха.... jump и goto! Аж фортран вспомнил! :-D
В принципе, нечего их пугаться. Это просто мове тон их в программировании использовать... Потому что новички практиковали безусловные переходы ИЗ, а самое главное, В тело цикла. Улыбка А потом поди расхлебай это...
Но это так, лирика.

Что по теме-то, дельное есть решение? (мне сдается, что это в принципе невозможно)

(Отредактировано автором: 30 Июня, 2011 - 22:30:32)

 
 Top
OrmaJever Модератор
Отправлено: 30 Июня, 2011 - 22:30:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Извините не дочитал первый пост.
Ну тогда в самом конце файла B пишем

а в функции


будет работать только в php 5.3


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Jo
Отправлено: 30 Июня, 2011 - 22:32:36
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




OrmaJever пишет:
Извините не дочитал первый пост.
Ну тогда в самом конце файла B пишем

а в функции


будет работать только в php 5.3



Дельно. Хоть и некрасиво. Если не будет других предложений....
Хотя, не пойдет. У хостера 5.2.12

(Отредактировано автором: 30 Июня, 2011 - 22:35:27)

 
 Top
OrmaJever Модератор
Отправлено: 30 Июня, 2011 - 22:51:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Jo пишет:
Хоть и некрасиво.

Не понял Некрасиво? Это идеальный вариант, если хоть кто то предложиет ещё вариант то он будет не лутше!
Jo пишет:
Хотя, не пойдет. У хостера 5.2.12

Ну я так и думал, за это нужно сказать спасибо хостеру


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Stierus Супермодератор
Отправлено: 01 Июля, 2011 - 01:30:23
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




обработка ошибок в нормальных системах осуществляется с помощью try ... catch (throw new exception), почитайте, думаю, вам подойдет.
 
My status
 Top
Jo
Отправлено: 01 Июля, 2011 - 02:05:09
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Июнь 2011  


Помог: 0 раз(а)




Stierus пишет:
обработка ошибок в нормальных системах осуществляется с помощью try ... catch (throw new exception), почитайте, думаю, вам подойдет.


вот-вот... сразу видно профи... Улыбка а как вычислил обработку ошибок!

просто система не очень "нормальная" - кроится из лоскутов. поэтому решение с goto было бы оч даже ничего...


ЗЫ навязчиво приходит в голову что-то вроде
- чтобы вбросить в скрипт return из функции...
Бред, конечно... но вдруг что-то такое решалось кем-то?.. Ну вдруг...
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB