ID:               20842
 User updated by:  [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
 Status:           Open
 Bug Type:         Documentation problem
 Operating System: Any
 PHP Version:      4.2.3
 New Comment:

http://www.php.net/manual/en/language.constants.php says a notice
should be generated. I did not get a notice. Maybe we have notice-level
messages turned of on php.ini or something like that? I'll check this
again when I get to work tomorrow.


Previous Comments:
------------------------------------------------------------------------

[2002-12-08 06:02:31] [EMAIL PROTECTED]

Re:

> Argh!! Apparently, PHP evaluates
> 
> $this->val = val;
> 
> without error, treating val like 'val'. I can't find this documented
in
> the manual.

The following appears in the manual page for Constants
(http://www.php.net/manual/en/language.constants.php):

http://uk.php.net/manual/en/language.constants.php

> If you use an undefined constant, PHP assumes that you
> mean the name of the constant itself. A notice will be
> issued when this happens.

Admittedly this is not very obvious, but it is there.  Perhaps an
additional note somewhere in the section on strings would be
appropriate, as this seems to be a fairly common error (particularly in
array subscripts!).

Cheeers!

------------------------------------------------------------------------

[2002-12-07 06:40:43] [EMAIL PROTECTED]

Jesus, it would be nice to have your examples in the documentation. I
cannot add it right now, unfortunately.

------------------------------------------------------------------------

[2002-12-05 19:53:03] [EMAIL PROTECTED]

Argh!! Apparently, PHP evaluates

$this->val = val;

without error, treating val like 'val'. I can't find this documented in
the manual.

The code posted near the end of the bug at
http://bugs.php.net/bug.php?id=20681 (look for [28 Nov 2:02pm]
[EMAIL PROTECTED]) contains an error like this, which was not noticed
by 4 people. Because of this, the code returns true for all
comparisons.

The behavior you describe is what I expected. Sorry about the mixup.

It would still be nice to have an explanation about how copies
(assignment) are done on objects -- is this a deep value copy? How are
references handled?

Also, it would be nice if the comparison operator page explained how
recursion is handled.

------------------------------------------------------------------------

[2002-12-05 19:11:48] [EMAIL PROTECTED]

Can you be more precise about what comparison operations you have in
mind? Remember that PHP is not OOP, it is a language that supports
OOP-style coding, so there is no inherent way of checking if 2
different instances of objects are of the same class w/ the same
properties, or two variables pointing to the same object instance.

The following code generates the expected result:

function bool2str($bool) {
        if ($bool === false) {
                return 'FALSE';
        } else {
                return 'TRUE';
        }
}
class Foo {

        var $flag;

        function Foo($flag=true) {
                $this->flag = $flag;
        }
}

$o = new Foo();
$p = new Foo(false);
$q = new Foo();

// this should be true
echo bool2str($o == $q)."\n";
// this should be false
echo bool2str($o != $q)."\n";
// this should be true
echo bool2str($o === $q)."\n";
// this should be false
echo bool2str($o == $p)."\n";
// this should be false
echo bool2str($o === $p)."\n";
// this should be true
echo bool2str($o != $p)."\n";
// this should be true
echo bool2str($o !== $p)."\n";




------------------------------------------------------------------------

[2002-12-05 16:22:03] [EMAIL PROTECTED]

I cannot find any explanation of object copying or comparison in the
PHP manual (or in the user comments).

Even a note saying "don't expect comparison operators to work on
objects" would by useful -- it would have saved me a couple of days of
debugging and rewriting code.

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=20842&edit=1


-- 
PHP Documentation Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to