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 :: Остановить скрипт из функции. [2]

 PHP.SU

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


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

> Описание: Возможно ли?
Ch_chov
Отправлено: 01 Июля, 2011 - 05:57:35
Post Id



Постоянный участник


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


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




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

Если return вызывается из глобальной области видимости (не из функции), то текущий скрипт будет остановлен. Возможно даже, передать с помощью return какое то значение в родительский скрипт.
http://php.net/manual/ru/function.return.php
 
 Top
Jo
Отправлено: 01 Июля, 2011 - 10:11:02
Post Id


Новичок


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


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




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

Если return вызывается из глобальной области видимости (не из функции), то текущий скрипт будет остановлен. Возможно даже, передать с помощью return какое то значение в родительский скрипт.
http://php.net/manual/ru/function.return.php



Все это понятно. Вопрос-то в том, можно ли передать в родительский скрипт не "какое-то значение", а команду на исполнение - в моем случае - return.
 
 Top
Stierus Супермодератор
Отправлено: 01 Июля, 2011 - 10:33:19
Post Id



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


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


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




file 1:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. try{
  3.         include('file2');
  4. }
  5. catch ( Exception $e){
  6.         echo "file1: <br/>\r\n";
  7.         var_export($e);
  8. }
  9. ?>



file2:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class LocalException extends Exception {};
  3.  
  4. function return2File2Catch(){
  5.         throw new LocalException('Это сообщение отловят в file2');     
  6. }
  7. function return2File1Catch(){
  8.         throw new Exception('Это сообщение отловят в file1');  
  9. }
  10.  
  11. try{
  12.         return2File2Catch(); //тут мы вернемся в file 2 catch блок
  13.         //return2File1Catch(); //тут мы вернемся в file 1 catch блок
  14. }
  15. catch(LocalException $e){
  16.         echo "file2: <br/>\r\n";
  17.         var_export($e);
  18. }


вы так и не поняли, что я вам хотел сказать
(Добавление)
ясное дело, что ф-и вида return2file2catch исключительно показательные, на самом деле они должны выполнять какую-то логику и в случае ошибок кидать соответствующие исключения.

(Отредактировано автором: 01 Июля, 2011 - 10:52:13)

 
My status
 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