Résultats inversés du vaisseau spatial
<?php
class A {
public string $a;
public string $b;
public function __construct(
string $a,
string $b,
){
$this->a = $a;
$this->b = $b;
}
}
$a = new A('b', 'a');
$b = new A('a', 'b');
var_dump($a <=> $b); // 1
var_dump($b <=> $a); // -1
class B {
public string $b; // The property declarations are inverted
public string $a;
public function __construct(
string $a,
string $b,
){
$this->a = $a;
$this->b = $b;
}
}
$a = new B('b', 'a');
$b = new B('a', 'b');
var_dump($a <=> $b); // -1
var_dump($b <=> $a); // 1
Dans la première classe, les propriétés sont déclarées $a, puis $b. La comparaison des valeurs avec le vaisseau spatial donne 1, -1.
Dans la première classe, les propriétés sont déclarées $b, puis $a. Le reste du code est identique. La comparaison des valeurs avec le vaisseau spatial donne -1, 1.
Ce phénomène disparaît lorsqu’on utilise des propriétés promues.
See Also
- Order of properties matter [Try me]
- Order of promoted properties doesn’t matter’ [Try me]
PHP Features
Last updated: 11 October 2026