3v4l.org

run code in 500+ PHP versions simultaneously
<?php class Foo { public string $pub; private string $priv; public function __construct(string $pub, string $priv) { $this->pub = $pub; $this->priv = $priv; } } class Bar extends Foo {} // --- Case 1: identical (same instance) $a = new Foo('hello', 'world'); $b = $a; echo "=== Same instance ===\n"; echo '$a == $b : ' . var_export($a == $b, true) . "\n"; // true echo '$a === $b : ' . var_export($a === $b, true) . "\n"; // true // --- Case 2: equal (same values, different instances) $c = new Foo('hello', 'world'); echo "\n=== Same values, different instances ===\n"; echo '$a == $c : ' . var_export($a == $c, true) . "\n"; // true echo '$a === $c : ' . var_export($a === $c, true) . "\n"; // false // --- Case 3: different values (pub differs) $d = new Foo('other', 'world'); echo "\n=== Different pub ===\n"; echo '$a == $d : ' . var_export($a == $d, true) . "\n"; // false echo '$a === $d : ' . var_export($a === $d, true) . "\n"; // false // --- Case 4: different values (priv differs) $e = new Foo('hello', 'secret'); echo "\n=== Different priv ===\n"; echo '$a == $e : ' . var_export($a == $e, true) . "\n"; // false echo '$a === $e : ' . var_export($a === $e, true) . "\n"; // false // --- Case 5: different classes (same structure, same values) $f = new Bar('hello', 'world'); echo "\n=== Different class (Bar extends Foo), same values ===\n"; echo '$a == $f : ' . var_export($a == $f, true) . "\n"; // false (different classes) echo '$a === $f : ' . var_export($a === $f, true) . "\n"; // false // --- Case 6: clone with a modified property $g = clone $a; $g->pub = 'other'; echo "\n=== Clone with modified pub ===\n"; echo '$a == $g : ' . var_export($a == $g, true) . "\n"; // false echo '$a === $g : ' . var_export($a === $g, true) . "\n"; // false // --- Case 7: unmodified clone $h = clone $a; echo "\n=== Unmodified clone ===\n"; echo '$a == $h : ' . var_export($a == $h, true) . "\n"; // true echo '$a === $h : ' . var_export($a === $h, true) . "\n"; // false

preferences:
59.93 ms | 798 KiB | 5 Q