অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং হলো একটি সফটওয়্যার অ্যাপ্রোচ যা PHP 5-এ যোগ করা হয়েছে, যা কম্পোজিট অ্যাপ্লিকেশন সহজে বিল্ড করতে সাহায্য করে। PHP 5-এ যোগ করা কিছু OOP কনসেপ্ট রয়েছে: অ্যাবস্ট্রাকশন, ইন্টারফেস, স্ট্যাটিক মেথড এবং স্ট্যাটিক ক্লাস ইত্যাদি।
এই আর্টিকেলে আমরা এনক্যাপসুলেশন এবং এর ইমপ্লিমেন্টেশন কয়েকটি উদাহরণ দিয়ে শিখব।
ডেটা ও মেথডগুলোকে একটি একক ইউনিটে (যাকে ক্লাস বলা হয়) মুড়িয়ে রাখাকে এনক্যাপসুলেশন বলা হয়। এনক্যাপসুলেশন ক্লাসের ভিতরে থাকা ডেটা মেম্বার ও মেথডের জন্য একটি প্রোটেকশন মেকানিজম। এনক্যাপসুলেশন টেকনিকের মাধ্যমে আমরা ডেটা মেম্বারগুলিকে বাইরের বিশ্বের এন্ড-ইউজার থেকে অ্যাক্সেস রেস্ট্রিক্ট করি।
PHP-তে এনক্যাপসুলেশন কোডকে আরও নিরাপদ ও রোবাস্ট बनाने ব্যবহৃত হয়। এনক্যাপসুলেশন ব্যবহার করে আমরা ডেটার আসল ইমপ্লিমেন্টেশন ইউজার থেকে লুকিয়ে রাখি এবং কেউ ডেটা মেম্বার ম্যানিপুলেট করতে পারে না শুধু ডিজায়ারড অপারেশন কল করছি ছাড়া।
উদাহরণ
এটি একটি উদাহরণ দিয়ে বুঝি।
<?php
class ATM {
private $custid;
private $atmpin;
public function PinChange($custid,$atmpin) {
// ---------perform tasks-----
}
public function CheckBalance($custid,$atmpin){
// ---------perform tasks-----
}
public function miniStatement($custid) {
// ---------perform tasks-----
}
}
$obj = new ATM();
$obj->CheckBalance(10005285637, 1**3);
?>
ব্যাখ্যা:
এই উদাহরণে, ATM ক্লাসের সকল ডেটা মেম্বার (ভেরিয়েবল) প্রাইভেট মডিফায়ার দিয়ে চিহ্নিত করা হয়েছে। এর মানে আমরা সরাসরি ATM ক্লাসের ডেটা মেম্বার (প্রপার্টি) অ্যাক্সেস করতে পারি না। তাই, আমরা ক্লাস প্রপার্টি সরাসরি পরিবর্তন করতে পারি না। ক্লাস প্রপার্টি (ডেটা মেম্বার) পরিবর্তন করার একমাত্র উপায় হলো একটি মেথড (ফাংশন) কল করা। তাই আমরা ATM ক্লাসের সকল মেথড পাবলিক অ্যাক্সেস মডিফায়ার দিয়ে ডিক্লেয়ার করেছি। ইউজার ক্লাস মেথডে আশা করা আর্গুমেন্ট পাস করে একটি নির্দিষ্ট টাস্ক পারফর্ম করতে পারে।
মান লেউ কেউ ব্যালেন্স চেক করতে চায়, তবে সে CheckBalance() মেথডটি প্রয়োজনীয় আর্গুমেন্ট $custid="10005285637" এবং $atmpin="1**3" দিয়ে অ্যাক্সেস করতে হবে। এটিকে এনক্যাপসুলেশন দিয়ে ডেটা হাইডিং বলা হয়।
নোট:
PHP-তে এনক্যাপসুলেশন অর্জন করা যায় অ্যাক্সেস স্পেসিফায়ার ইমপ্লিমেন্ট করে।