On 13 Mar 2002 [EMAIL PROTECTED] wrote:
> ID: 16046
> Updated by: [EMAIL PROTECTED]
> Reported By: [EMAIL PROTECTED]
> Status: Bogus
> Bug Type: Scripting Engine problem
> Operating System: linux
> PHP Version: 4.1.2
> New Comment:
>
> Well, I did RTFM, quite a bit in fact. The result of the function call
> *is* a "plain variable", no?
The result is indeed a variable, but empty() is not a funtion, and it
requires a variable as 'parameter' and not a result from a function (cause
the function gets executed).
> If not, your telling me that (from my
> example) $foo->getStr() is not equal to the plain string "foo"?
empty("foo"); doesn't work either, only a variable is allowed. (just like
isset()).
> It's
> just a string coming back from the call, and that should be accepted
> into empty() just as if I'd typed a string in there to begin with.
> Seems like the evaluation order is screwed up to me. In any case, if
> this function is "working as intended", a better FM might be in order
> in this case.
>From the manual: (http://www.php.net/manual/en/function.empty.php)
Note that this is meaningless when used on anything which isn't a
variable; i.e. empty (addslashes ($name)) has no meaning since it would be
checking whether something which isn't a variable is a variable with a
FALSE value.
Derick
>
>
> Previous Comments:
> ------------------------------------------------------------------------
>
> [2002-03-13 15:53:21] [EMAIL PROTECTED]
>
> RTFM:
>
> http://www.php.net/manual/en/function.empty.php
>
> empty() only works with plain variables.
>
>
>
> ------------------------------------------------------------------------
>
> [2002-03-13 15:30:41] [EMAIL PROTECTED]
>
> /*
> See the script below. Passing a value returned from an object function
> call to isset() and empty() results in a parsing error. strlen() and
> other functions don't have this problem. The code example below tests
> empty(). You may substitute isset() as well and get the same parse
> error.
> This bug exists on both Apache 1.3.9/PHP 4.1.1 and Apache 1.3.23/PHP
> 4.1.2
> */
>
> //first, declare a simple class with 1 function
> class Foo {
> function getStr() { return "foo"; }
> }
>
> //now make an object of that class
> $foo = new Foo();
>
> /*
> * now let's test empty() with just the string
> * this should evaluate false, and result in "not empty"
> * being printed
> */
> $fooStr = $foo->getStr();
> if ( empty($foostr) ) {
> echo "empty!";
> } else {
> echo "not empty!";
> }
>
> /*
> * now test it using the object function call. This is the
> * functional equivalent of the previous test, and should
> * result in the same result. However it results in:
> * "Parse error: parse error, expecting `')'' "
> * If you comment out this block, this script parses and
> * executes successfully.
> */
> if ( empty($foo->getStr()) ) {
> echo "empty!";
> } else {
> echo "not empty!";
> }
>
>
>
> ------------------------------------------------------------------------
>
>
> --
> Edit this bug report at http://bugs.php.net/?id=16046&edit=1
>
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php