Signatur
Beschreibung
runkit7_object_id() gibt die interne, ganzzahlige Objekt-ID zurück, die PHP einem Objekt bei seiner Erzeugung zuweist. Diese ID ist innerhalb eines einzelnen PHP-Prozesslaufs eindeutig und entspricht dem Wert, den spl_object_id() (verfügbar ab PHP 7.2) ebenfalls liefert.
Die Funktion ist Teil der Runkit7-PECL-Erweiterung, die Werkzeuge zur Laufzeit-Manipulation von PHP-Code bereitstellt. Sie kann nützlich sein, wenn Runkit7 bereits im Projekt eingebunden ist und man auf eine einheitliche API innerhalb der Erweiterung setzen möchte, ohne spl_object_id() separat aufrufen zu müssen.
Typische Anwendungsfälle sind das Tracking und Debugging von Objektinstanzen, das Vergleichen von Objektidentitäten ohne den ===-Operator oder das Erstellen von Lookup-Strukturen, in denen Objekte als Schlüssel verwendet werden sollen (z. B. in einem Array, das nach Objekt-ID indiziert ist).
Hinweis: Die zurückgegebene ID ist nicht persistent über Prozessgrenzen oder Serialisierungen hinweg. Sie kann nach dem Zerstören eines Objekts an ein neues Objekt vergeben werden (ID-Wiederverwendung).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $object Pflicht | object | Das PHP-Objekt, dessen interne Objekt-ID ermittelt werden soll. |
Rückgabewert
spl_object_id($object).Beispiele
Objekt-ID einer einfachen Instanz abfragen
<?php
// Voraussetzung: Runkit7-Erweiterung ist geladen
$obj = new stdClass();
$id = runkit7_object_id($obj);
echo "Objekt-ID: " . $id . PHP_EOL;
// Vergleich mit spl_object_id (identisches Ergebnis)
if (function_exists('spl_object_id')) {
echo "spl_object_id: " . spl_object_id($obj) . PHP_EOL;
}
Objekte per ID in einem Lookup-Array verwalten
<?php
// Runkit7 muss als PECL-Erweiterung geladen sein
class Sensor {
public function __construct(public string $name) {}
}
$registry = [];
$s1 = new Sensor('Temperatur');
$s2 = new Sensor('Druck');
$registry[runkit7_object_id($s1)] = $s1;
$registry[runkit7_object_id($s2)] = $s2;
foreach ($registry as $id => $sensor) {
echo "ID {$id}: {$sensor->name}" . PHP_EOL;
}
// Wichtig · Fallstricke
Erweiterung erforderlich: runkit7_object_id() ist keine eingebaute PHP-Funktion, sondern Teil der Runkit7-PECL-Erweiterung. Ohne diese Erweiterung führt der Aufruf zu einem fatalen Fehler. Für reine ID-Abfragen ohne Runkit7-Abhängigkeit sollte spl_object_id() (PHP >= 7.2) bevorzugt werden.
ID-Wiederverwendung: Nach dem Zerstören eines Objekts (z. B. durch unset()) kann dessen ID an ein neu erzeugtes Objekt vergeben werden. Langlebige Lookup-Strukturen können dadurch inkonsistent werden.
Kein persistenter Wert: Die ID ist nur innerhalb eines Prozesslaufs gültig und darf nicht serialisiert, gespeichert oder zwischen Prozessen ausgetauscht werden.