Req #43936 [Com]: __empty() magic method

2012-07-20 Thread thomas at sibben dot nl
Edit report at https://bugs.php.net/bug.php?id=43936edit=1

 ID: 43936
 Comment by: thomas at sibben dot nl
 Reported by:james dot laver at gmail dot com
 Summary:__empty() magic method
 Status: Open
 Type:   Feature/Change Request
 Package:Class/Object related
 Operating System:   GNU/Linux
 PHP Version:5.2.5
 Block user comment: N
 Private report: N

 New Comment:

The documentation states:

empty() only checks variables as anything else will result in a parse error

if 'everything else' is a __get() returning an array with a value in it, it 
returns TRUE,

Ubuntu 10.04 PHP 5.3.2-1ubuntu4.17


Previous Comments:

[2011-08-24 00:40:26] chrisstocktonaz at gmail dot com

I made the start of a patch for this, but there is some issues that would need 
to 
be worked out with has_property calls, it seems oddly interfaced with by the 
various callers.

http://pastebin.com/d5gQycDB


[2010-10-23 16:08:03] ka...@php.net

Fixed the overloading property vs language construct issue in the documentation.

This feature request is still valid, so moving it to be one instead of a 
documentation issue


[2010-10-23 16:06:52] ka...@php.net

Automatic comment from SVN on behalf of kalle
Revision: http://svn.php.net/viewvc/?view=revisionamp;revision=304662
Log: Added a remark about overloaded properties and language constructs (Bug 
#43936)


[2010-06-30 13:02:14] paj...@php.net

Let document the __isset requirements better, when one relies on empty.


[2010-06-30 12:00:35] icy at lighttpd dot net

Simple test script to trigger the bug:

?php

class Foo {
public $vars;

function Foo() {
$this-vars['bar'] = 1;
}

function __get($var) {
return $this-vars[$var];
}
}

$foo = new Foo;

var_dump(empty($foo-bar));
$baz = $foo-bar;
var_dump(empty($baz));

Expected result:

bool(false) bool(false) 

Actual result:
--
bool(true) bool(false)




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

https://bugs.php.net/bug.php?id=43936


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=43936edit=1


Req #43936 [Com]: __empty() magic method

2012-07-20 Thread thomas at sibben dot nl
Edit report at https://bugs.php.net/bug.php?id=43936edit=1

 ID: 43936
 Comment by: thomas at sibben dot nl
 Reported by:james dot laver at gmail dot com
 Summary:__empty() magic method
 Status: Open
 Type:   Feature/Change Request
 Package:Class/Object related
 Operating System:   GNU/Linux
 PHP Version:5.2.5
 Block user comment: N
 Private report: N

 New Comment:

reproducable with:

class Test {
private $test;
 
function __construct($test)
{
$this-test = $test;
}
 
public function __get($key)
{
return $this-$key;
}
 
public function getTest()
{
return $this-test;
}
}
 
$test = new Test('test');
 
if (!empty($test-test)) {
echo $test-test;
} else {
echo 'empty';
}
 
echo 'br /';
echo $test-test;
echo 'br /';
echo $test-getTest();


Previous Comments:

[2012-07-20 13:44:41] thomas at sibben dot nl

The documentation states:

empty() only checks variables as anything else will result in a parse error

if 'everything else' is a __get() returning an array with a value in it, it 
returns TRUE,

Ubuntu 10.04 PHP 5.3.2-1ubuntu4.17


[2011-08-24 00:40:26] chrisstocktonaz at gmail dot com

I made the start of a patch for this, but there is some issues that would need 
to 
be worked out with has_property calls, it seems oddly interfaced with by the 
various callers.

http://pastebin.com/d5gQycDB


[2010-10-23 16:08:03] ka...@php.net

Fixed the overloading property vs language construct issue in the documentation.

This feature request is still valid, so moving it to be one instead of a 
documentation issue


[2010-10-23 16:06:52] ka...@php.net

Automatic comment from SVN on behalf of kalle
Revision: http://svn.php.net/viewvc/?view=revisionamp;revision=304662
Log: Added a remark about overloaded properties and language constructs (Bug 
#43936)


[2010-06-30 13:02:14] paj...@php.net

Let document the __isset requirements better, when one relies on empty.




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

https://bugs.php.net/bug.php?id=43936


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=43936edit=1