On 08 October 2003 17:20, Chris Shiflett wrote:
> > The internals developers probably didn't see a need to provide
> > support for "return" in conditionals since it can't return a value
> > to the conditional.
>
> Ugh. This is the same misconception, again. Let's try some different
> code:
>
> <?
> function foo()
> {
> echo "foo\n";
> }
>
> function bar()
> {
> return true;
> }
>
> bar() or foo();
>
> >
>
> The return of foo() does not matter. It is not evaluated.
Semantically, that is true -- but syntactically it still has to *have* a potential
value (since bar() *might* return false), so PHP will barf at the compilation stage if
instead of foo() you have a construct which *cannot* return a value. The distinction
is not whether the construct on the right of "or" is actually executed or not for any
given combination of input values, but whether it is *capable* of returning a value,
should it be called upon to do so.
> I do not
> understand why this is still unclear. Consider this:
>
> if (!bar())
> {
> foo();
> }
>
> Does it seem like foo() is involved in the conditional when expressed
> like this? I hope not.
No -- but expressed like this, foo() is not required to have a return value -- it only
needs to be executable. In
bar() or foo()
it must actually be *capable* of returning a value, even if that value can never be
used.
In short, it's a compile-time question ("can this construct return a value if required
to do so?") vs a run-time question ("does this construct need to be evaluated?").
Cheers!
Mike
---------------------------------------------------------------------
Mike Ford, Electronic Information Services Adviser,
Learning Support Services, Learning & Information Services,
JG125, James Graham Building, Leeds Metropolitan University,
Beckett Park, LEEDS, LS6 3QS, United Kingdom
Email: [EMAIL PROTECTED]
Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php