In PHP wird die Schnittstelle ArrayAccess verwendet, um eine Klasse zu entwickeln, die einen Array-ähnlichen Zugriff auf eine der Array-Eigenschaften bereitstellt. Eine solche Array-Eigenschaft kann während der Objekterstellung manipuliert werden, ohne sie offenzulegen. Die ArrayAccess-Schnittstelle definiert die folgenden abstrakten Methoden
ArrayAccess { /* Methods */ abstract public offsetExists ( mixed $offset ) : bool abstract public offsetGet ( mixed $offset ) : mixed abstract public offsetSet ( mixed $offset , mixed $value ) : void abstract public offsetUnset ( mixed $offset ) : void }
ArrayAccess::offsetExists – Ob der Offset vorhanden ist
ArrayAccess::offsetGet – Der abzurufende Offset < /p>
ArrayAccess: :offsetSet – Weist dem angegebenen Offset einen Wert zu.
ArrayAccess::offsetUnset – Setzt den Offset zurück.
ArrayAccess::offsetUnset – Offset aufheben. p>
Im folgenden Beispiel ist das assoziative Array eine interne private Eigenschaft von myclass. Der Schlüssel fungiert als Offset. Wir können Elemente in einem Array festlegen, abrufen und deaktivieren. Wenn kein Offset angegeben ist, wird er als Ganzzahl behandelt und jedes Mal auf den nächsten Index erhöht.
Live-Demonstration
<?php class myclass implements ArrayAccess { private $arr = array(); public function __construct() { $this->arr = array( "Mumbai" => "Maharashtra", "Hyderabad" => "A.P.", "Patna" => "Bihar", ); } public function offsetSet($offset, $value) { if (is_null($offset)) { $this->arr[] = $value; } else { $this->arr[$offset] = $value; } } public function offsetExists($offset) { return isset($this->arr[$offset]); } public function offsetUnset($offset) { unset($this->arr[$offset]); } public function offsetGet($offset) { return isset($this->arr[$offset]) ? $this->arr[$offset] : null; } } $obj = new myclass(); var_dump(isset($obj["Mumbai"])); var_dump($obj["Mumbai"]); unset($obj["Mumbai"]); var_dump(isset($obj["Mumbai"])); $obj["Bombay"] = "Maharashtra"; var_dump($obj["Bombay"]); $obj["Chennai"] = 'Tamilnadu'; $obj[] = 'New State'; $obj["Hyderabad"] = 'Telangana'; print_r($obj); ?>
Das obige Programm zeigt die folgende Ausgabe
bool(true) string(11) "Maharashtra" bool(false) string(11) "Maharashtra" myclass Object( [arr:myclass:private] => Array( [Hyderabad] => Telangana [Patna] => Bihar [Bombay] => Maharashtra [Chennai] => Tamilnadu [0] => New State ) )
Array-Eigenschaften der Klasse können auch indizierte Arrays sein. Als Offset fungiert in diesem Fall der Index des Elements (beginnend bei 0). Wenn die Methode offsetSet(0 ohne den Offset-Parameter aufgerufen wird, wird der Array-Index auf die nächste verfügbare Ganzzahl erhöht
<?php class myclass implements ArrayAccess { private $arr = array(); public function __construct() { $this->arr = array("Mumbai", "Hyderabad", "Patna"); } public function offsetSet($offset, $value) { if (is_null($offset)) { $this->arr[] = $value; } else { $this->arr[$offset] = $value; } } public function offsetExists($offset) { eturn isset($this->arr[$offset]); } public function offsetUnset($offset) { unset($this->arr[$offset]); } public function offsetGet($offset) { return isset($this->arr[$offset]) ? $this->arr[$offset] : null; } } $obj = new myclass(); var_dump(isset($obj[0])); var_dump($obj[0]); unset($obj[0]); var_dump(isset($obj[0])); $obj[3] = "Pune"; var_dump($obj[3]); $obj[4] = 'Chennai'; $obj[] = 'NewDelhi'; $obj[2] = 'Benguluru'; print_r($obj); ?>
Das obige Programm zeigt die folgende Ausgabe
bool(true) string(6) "Mumbai" bool(false) string(4) "Pune" myclass Object( [arr:myclass:private] => Array( [1] => Hyderabad [2] => Benguluru [3] => Pune [4] => Chennai [5] => NewDelhi ) )
Das obige ist der detaillierte Inhalt vonPHP ArrayAccess-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!