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

Reply via email to