Re: [RFC] Spaceship operator RFC

From: Date: Sun, 19 Apr 2015 22:30:37 +0000
Subject: Re: [RFC] Spaceship operator RFC
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-85874@lists.php.net to get a copy of this message
Hi! Stanislav Malyshev wrote: > >> A discrepancy between the actual behavior of the spaceship operator and >> an example given in its RFC has been reported recently (bug #69466[1]). > > I'm not sure what the discrepancy is, could you explain? There is the following example in the RFC: // only values are compared $a = (object) ["a" => "b"]; $b = (object) ["b" => "b"]; echo $a <=> $b; // 0 But the actual result is currently 1, not 0. >> To me it appears that there is a contradiction in the RFC (see my >> comment on the respective report), which would have to be resolved one >> way or another. > > I don't see the contradiction. The objects in your example are not > comparable, since $a < $b and $b < $a are both not true, 1 is returned. > Returning 0 would be wrong of course since these objects are not equal. > In fact, there's no "right" value in this case as objects are not > comparable - so the result is undefined. In this case, undefined is 1. When there is no "right" value, why not raising E_NOTICE at least. It appears to me that returning 1 (as "undefined") without further notice is too misleading, as it suggests that $a is greater than $b, but that is not true: ($a > $b === false). -- Christoph M. Becker

« previous php.internals (#85874) next »