Abhängigkeitsinjektion in Slim basiert auf Pickel, also habe ich mich noch einmal mit Pickel beschäftigt. Im Vergleich zu der Abhängigkeitsinjektionsklasse, die ich zuvor geschrieben habe, hat Pimple eine sehr neue Verwendung, anstatt
$container->session_storage = function ($c) { return new $c['session_storage_class']($c['cookie_name']); };
zu verwenden, wird es in ein Array injiziert:
$container['session_storage'] = function ($c) { return new $c['session_storage_class']($c['cookie_name']); };
Ich habe es nur entdeckt Als ich mir den Quellcode ansah, stellte sich heraus, dass der Trick in der von PHP5 bereitgestellten ArrayAccess-Schnittstelle liegt.
Offizielle Definition: Eine Schnittstelle, die den Zugriff auf Objekte wie den Zugriff auf Arrays ermöglicht.
Diese Schnittstelle definiert hauptsächlich vier abstrakte Methoden:
abstract public boolean offsetExists ( mixed $offset ) #检查数据是否存在 abstract public mixed offsetGet ( mixed $offset ) #获取数据 abstract public void offsetSet ( mixed $offset , mixed $value ) #设置数据 abstract public void offsetUnset ( mixed $offset ) #删除数据
Wenn Sie möchten, dass das Objekt wie ein PHP-Array verwendet wird, müssen wir es implementieren ArrayAccess Schnittstelle
Der Code lautet wie folgt:
interface ArrayAccess boolean offsetExists($index) mixed offsetGet($index) void offsetSet($index, $newvalue) void offsetUnset($index)
Das folgende Beispiel zeigt, wie diese Schnittstelle verwendet wird, ist aber nicht vollständig ist genug, um zu verstehen: -> PHP ruft die Methode offsetGet() auf und ruft dann von dieser Methode aus die datenbankbezogene Methode getUserId() auf.
Das obige ist der detaillierte Inhalt vonDetaillierte Code-Erklärung der ArrayAccess-Schnittstelle in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!