This is a strange behavior. If the original class have
no predefined variables, then if the object's
constructor does no assignment of its own, the
resulting object compares to null, e.g.

class foo {
        var $bar;
        function foo() {
                // do nothing
        }
}
$o = new foo();
if ($o == null) echo "boom!";
if (empty($o)) echo " zap!";


Outputs "boom! zap!", even when the object was
created. Are we assuming than an object w/ no defined
member vars is a null object? Not sure that is the
expected behavior, but I might be wrong.

Adding a predefined var in the class definition or
setting one in the constructor, "fixes" the problem.

Tested it w/ PHP 4.0.4pl1 and latest PHP from CVS
(both compiled as stand alone executables)

--- [EMAIL PROTECTED] wrote:
> Date: 18 Mar 2001 05:33:38 -0000
> To: [EMAIL PROTECTED]
> From: [EMAIL PROTECTED]
> Subject: [PHP-NOTES] note 12009 added to
> language.oop.php
> 
> I wondered why the "new" assignments in these
> examples were never tested for success --- ie. 
> if(!($var = new Cart())) echo "failure";
> 
> Now I know (at least for PHP4.0.4pl1).
> 
> The test ALWAYS fails unless the constructor of the
> class does a local member variable assignment.
> 
> This I don't like.  Could someone please explain to
> me why this is a "good thing"?
> 
>  http://www.php.net/manual/en/language.oop.php 
> 
> 
> -- 
> PHP Notes Mailing List (http://www.php.net/)
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
> To contact the list administrators, e-mail:
> [EMAIL PROTECTED]
> 


=====
--- Jesus M. Castagnetto <[EMAIL PROTECTED]>

__________________________________________________
Do You Yahoo!?
Get email at your own domain with Yahoo! Mail. 
http://personal.mail.yahoo.com/

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to