By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,159 Members | 1,941 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,159 IT Pros & Developers. It's quick & easy.

'Parse error' problem in "isset" and "empty"

P: n/a
I've been having some problems with a parse error that I can't figure
out (PHP 4.3.11 on Solaris9). Sample code:

<?php
// getting strange parse errors on this
class A {
var $value;
function A() {
$this->value = 1;
}

function getValue() {
return $this->value;
}
}

$a = new A();
if (!empty($a->getValue())) {
echo "success";
}
else {
echo "failure";
}
?>

The result of this is:

Parse error: parse error, unexpected '(', expecting ')' in
/foo/public_html/parse_errors.php on line 15

I also get the same effect with "isset", however, testing with "is_null"
or "is_int" produces the correct ("success"/"failure") result. Any ideas?

/Marcin
Aug 21 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
Check out the following:

http://www.php.net/manual/en/function.empty.php

empty() and isset() only work on variables. In your case,
$a->getValue() is the return value of a function -- not a variable.
You could do something like:

$a = new A();
$v = $a->getValue();
if (!empty($v)) {
echo "success";
}
else {
echo "failure";
}

Alternatively, you could define your own isEmpty() function which does
whatever you want. It could be as simple as:

function isEmpty($value) {
return (strlen($value) == 0);
}

Also, as of PHP 5.1 you can overload calls to empty() and isset() on
object properties. Most useful when you also overload the getters and
settings (via __get() and __set()).

Aug 22 '05 #2

P: n/a
ZeldorBlat wrote:
Check out the following:

http://www.php.net/manual/en/function.empty.php

empty() and isset() only work on variables. In your case,
$a->getValue() is the return value of a function -- not a variable.
You could do something like:
Yea, thanks. I noticed this just as I posted the article, and then
promply canceled it, but it seems it didn't get canceled everywhere.
the is_int and is_null work differently, and it threw me off a bit.
$a = new A();
$v = $a->getValue();
if (!empty($v)) {
echo "success";
}
else {
echo "failure";
}
Yes, that's how I do it now. A bit of fuss, but works.
Alternatively, you could define your own isEmpty() function which does
whatever you want. It could be as simple as:

function isEmpty($value) {
return (strlen($value) == 0);
}
Yes, but again, "empty" checks for null, 0, etc. Which is useful.
Also, as of PHP 5.1 you can overload calls to empty() and isset() on
object properties. Most useful when you also overload the getters and
settings (via __get() and __set()).


Will have a lookie, but still working in 4.x level (and it's not
going to change anytime soon). Thanks.

/Marcin
Aug 22 '05 #3

P: n/a
Well, that's the beauty of writing your own isEmpty()...you can have it
do whatever you want. You could simulate PHP's empty() behavior pretty
easily:

function isEmpty($value) {
return (strlen($value) == 0 || is_null($value) || $value == 0);
}

Aug 22 '05 #4

P: n/a
Hello!
Well, that's the beauty of writing your own isEmpty()...you can have it
do whatever you want. You could simulate PHP's empty() behavior pretty
easily:

function isEmpty($value) {
return (strlen($value) == 0 || is_null($value) || $value == 0);
}


If you want to emulate PHP empty()'s behaviour completely (and only
then) you should use

function isEmpty($value) {
return empty($value);
}

I assume this is faster than doing the checks yourself.

Greetings,
Hero
Aug 22 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.