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