If that happens it would be great.
At 00:33 22/10/2001 -0500, Matt McClanahan wrote:
>On Mon, Oct 22, 2001 at 02:57:44PM +1000, Brian White wrote:
>
>Preface to these ramblings: Exception handling is planned for the next
>version of the Zend engine. For details, see
>
>http://www.zend.com/zend/future.php
>
> > The nasty thing then comes in that if any task fails, I have to stop. So I
> > create a convention that every task returns "1" for success, "0" for
> > failure. Tasks can also be nested. So this gives me a structure like
> > this:
> >
> > if ( ! GrabLock() )
> > return 0;
> >
> > $retval = 0;
> > switch(0){ default:
> >
> > if ( ! RunTask1() )
> > break;
> >
> > if ( ! RunTask2() )
> > break;
> >
> > if ( ! RunTask3() )
> > break;
> >
> > $retval = 1;
> > }
> >
> > ReleaseLock();
> > return $retval;
> >
> > This works, but it is cumbersome, you have to be VERY careful and there are
> > other complications in terms of reporting sensible error messages when
> > tasks are shared.
>
>This is probably no less messy, but it does allow you to handle an
>arbitrary number of steps, possibly with arguments, without having to
>add another if check as you're doing above. This also lets you know
>easilly which step failed:
>
>
>function first($a) { if ($a) return true; else return false; }
>function second($a) { if ($a) return true; else return false; }
>function third($a) { if ($a) return true; else return false; }
>
>function GrabLock() { echo "Grabbing.\n"; return true; }
>function ReleaseLock() { echo "Releasing.\n"; return true; }
>
>$ret = true;
>$funcs = Array('first','second','third');
>$args = Array(1,1,1); // Change one to zero to trigger a failure
>
>if (!GrabLock())
> return 0;
>
>while ($ret = $funcs[0]($args[0]))
>{
> array_shift($funcs);
> array_shift($args);
> if (!count($funcs)) break;
>}
>
>ReleaseLock();
>
>if (count($funcs)) echo "Failed at $funcs[0].\n";
>
>?>
>
>Matt
>
>--
>PHP General Mailing List (http://www.php.net/)
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>To contact the list administrators, e-mail: [EMAIL PROTECTED]
-
Brian White
Step Two Designs Pty Ltd - SGML, XML & HTML Consultancy
Phone: +612-93197901
Web: http://www.steptwo.com.au/
Email: [EMAIL PROTECTED]
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]