Page 1 of 1

Wie erstellen Sie anonyme Klassen, die nicht die gleiche Klasse sind

Posted: 22 Feb 2025, 14:51
by Guest
Ich habe festgestellt, dass anonyme Klassen, die mit derselben Methode erstellt wurden, die gleichen Klassen sind. < /p>

Code: Select all

function test($test) {
return new class($test) {
public function __construct(public $test) {}
};
}
function test2($test) {
return new class($test) {
public function __construct(public $test) {}
};
}

function compare($a, $b) {
var_dump([
$a == $b,
$a === $b,
get_class($a) == get_class($b),
]);
}

compare(test(1), test(1)); // true, false, true,
compare(test(['abc']), test(1)); // false, false, true,
compare(test(1), test2('xx')); // false, false, false
compare(test('xx'), test2('xx')); // false, false, false
< /code>
Ich erkläre es mir so, dass PHP dort einfach einen zufälligen Namen ersetzt. In Wirklichkeit gibt es also einfach eine Klasse mit einem Namen, und das Ausführen derselben Funktion ändert sich jedoch nicht den Namen, sodass die Klasse dieselbe ist. Eine Klasse, die einen Code verwendet, der dieselbe Syntax hat, aber unterschiedliche Klassen ist. Denn jetzt kann ich mir nicht vorstellen, dies zu kopieren und test3 () 
, test4 () , test5 () , ... , test50 () und erstellen Also, je nachdem, wie viele verschiedene Klassen ich benötige.
, um das anzurufen Methode, eine Klasse, die eine Schnittstelle implementiert, wurde benötigt. Br /> Die Schnittstelle enthält nur eine Methode, die eine Zeichenfolge zurückgeben muss. Methode würde den Wert davon zurückgeben Feld.
Aber ich habe beschlossen, dass ein Test nicht ausreichte. >
In diesem Mechanismus wird leider eine Prüfung basierend auf der :: class < /code> durchgeführt. Mit 50 verschiedenen Objekten, die verschiedene Werte aus der Methode zurückgegeben haben einige Zeit), daher meine Frage.