परिचय
PHP में, ArrayAccess इंटरफेस का उपयोग एक क्लास विकसित करने के लिए किया जाता है जो इसकी प्रॉपर्टी में से एक (जो एक सरणी है) को सरणी-जैसी एक्सेस प्रदान करता है। ऐसी सरणी प्रॉपर्टी को ऑब्जेक्ट निर्माण के दौरान एक्सपोज़ किए बिना मैनिपुलेट किया जा सकता है। ArrayAccess इंटरफेस निम्न एब्स्ट्रैक्ट मेथड परिभाषित करता है:
सिंटैक्स
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 - क्या कोई ऑफसेट मौजूद है
- ArrayAccess::offsetGet - पुनर्प्राप्त करने के लिए ऑफसेट
- ArrayAccess::offsetSet - निर्दिष्ट ऑफसेट पर मान असाइन करें
- ArrayAccess::offsetUnset - एक ऑफसेट को अनसेट करें
ArrayAccess उदाहरण
निम्न उदाहरण में, एक एसोसिएटिव सरणी myclass की इंटरनल प्राइवेट प्रॉपर्टी है। कुंजी ऑफसेट के रूप में कार्य करती है। हम सरणी में एक आइटम सेट, पुनर्प्राप्त और अनसेट कर सकते हैं। यदि ऑफसेट नहीं दिया गया है, तो इसे पूर्णांक माना जाता है, हर बार अगले इंडेक्स पर बढ़ता हुआ।
उदाहरण 1 (एसोसिएटिव सरणी)
<?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);
?>
आउटपुट
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
)
)
उदाहरण 2 (इंडेक्स्ड सरणी)
क्लास की सरणी प्रॉपर्टी एक इंडेक्स्ड सरणी भी हो सकती है। उस मामले में, एलिमेंट का इंडेक्स (0 से शुरू) ऑफसेट के रूप में कार्य करता है। offsetSet() मेथड को ऑफसेट आर्गुमेंट के बिना कॉल करने पर, सरणी का इंडेक्स अगले उपलब्ध पूर्णांक पर बढ़ जाता है।
<?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) {
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[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] = 'Bengaluru';
print_r($obj);
?>
आउटपुट
bool(true)
string(6) "Mumbai"
bool(false)
string(4) "Pune"
myclass Object(
[arr:myclass:private] => Array(
[1] => Hyderabad
[2] => Bengaluru
[3] => Pune
[4] => Chennai
[5] => NewDelhi
)
)
उपयोग: कॉन्फ़िगरेशन ऑब्जेक्ट, कलेक्शन रैपर, डेटा ट्रांसफर ऑब्जेक्ट जो सरणी-जैसे व्यवहार करते हैं।