ভূমিকা
PHP-এ, ArrayAccess ইন্টারফেস একটি ক্লাস ডেভেলপ করতে ব্যবহৃত হয় যা এর প্রপার্টির মধ্যে থাকা একটি অ্যারে-কে অ্যারে-লাইক এক্সেস প্রদান করে। এমন অ্যারে প্রপার্টি অবজেক্ট ক্রিয়েশনের সময় এক্সপোজ না করেই ম্যানিপুলেট করা যায়। ArrayAccess ইন্টারফেস নিচের অ্যাবস্ট্রাক্ট মেথডগুলো ডিফাইন করে—
সিনট্যাক্স
ArrayAccess { 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-এর ইন্টারনল প্রাইভেট প্রপার্টি। কিই অফসেট হিসেবে কাজ করে। আমরা অ্যারেতে একটি আইটেম সেট, রিট্রিভ এবং আনসেট করতে পারি। যদি অফসেট না দেওয়া হয়, এটি একটি ইন্টিজার হিসেবে বিবেচিত হয়, প্রতিবার পরবর্তী ইনডেক্সে ইনক্রিমেন্ট হয়।
উদাহরণ
<?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 ) )
ক্লাসের অ্যারে প্রপার্টি একটি ইনডেক্সড অ্যারেও হতে পারে। সেক্ষেত্রে, এলিমেন্টের ইনডেক্স (০ থেকে শুরু) অফসেট হিসেবে কাজ করে। অফসেট আর্গুমেন্ট ছাড়া 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] = 'Benguluru'; print_r($obj); ?>আউটপুট
উপরের প্রোগ্রাম নিচের আউটপুট দেখাবে—
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 ) )