পিএইচপি এসকিউএল ওয়ার্ডপ্রেস জাভাস্ক্রিপ্ট জেকুয়েরি এইচটিএমএল
ফোরাম
×

পিএইচপি টিউটোরিয়াল

হোম-HOME পরিচিতি-Introduction ইনস্টল-Install গঠনপ্রনালী-Syntax চলক-Variable পিএইচপি Echo / Print তথ্যের ধরণ-Data Types কনস্ট্যান্ট-Constant অপারেটর-Operator ফাংশন-Function সুপারগ্লোভাল-Superglobal

কন্ট্রোল স্টেটমেন্ট

if স্টেটমেন্ট if...Else স্টেটমেন্ট Switch স্টেটমেন্ট While লুপ DO...While লুপ For লুপ

পিএইচপি এ্যারে এবং স্ট্রিং

এ্যারে-Array এ্যারে সর্টিং -Array Sorting মাল্টি এ্যারে-Multi Array স্ট্রিং-String

পিএইচপি এডভান্স

তারিখ এবং সময় পিএইচপি include ফাইল হ্যান্ডলিং-File Handling ফাইল খোলা/পড়া ফাইল তৈরি/লিখা ফাইল আপলোড ফাইল ডাউনলোড কুকি-Cookie সেশন-Session ফিল্টার-Filter এডভান্স ফিল্টার-Advance Filter এঁরর হ্যান্ডলিং-Error Handling এক্সেপশন হ্যান্ডেলিং-Exception Handling

পিএইচপি ফরম

ফরম হ্যান্ডলিং ফরম ভ্যালিডেশন আবশ্যক ফরম ফিল্ড ফরম URL/E-mail সম্পূর্ণ ফরম

MySQL ডেটাবেজ

MySQL ডেটাবেজ MySQL ডেটাবেজ সংযোগ MySQL ডেটাবেজ তৈরী MySQL টেবিল তৈরী MySQL তথ্য ইনসার্ট MySQL শেষ আইডি পান MySQL একাধিক তথ্য ইনসার্ট MySQL প্রিপেয়ার্ড স্টেটমেন্ট MySQL তথ্য সিলেক্ট MySQL তথ্য ডিলিট MySQL তথ্য আপডেট MySQL সীমিত তথ্য সিলেক্ট

পিএইচপি- এক্সএমএল

PHP XML Parser PHP SimpleXML Parser PHP XML Parser PHP SimpleXML - Get PHP XML Expat PHP XML Dom

পিএইচপি - এজাক্স

পিএইচপি AJAX পরিচিতি AJAX পিএইচপি AJAX ডেটাবেজ AJAX এক্সএমএল AJAX সারাসরি সার্চ AJAX RSS রির্ডার AJAX Poll

পিএইচপি অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং(OOP)

OOP পরিচিতি OOP class তৈরী OOP objects তৈরী OOP $this কিওয়ার্ড OOP মেথড এবং প্রোপার্টি চেইনিং OOP অ্যাক্সেস মোডিফায়ার OOP ম্যাজিক মেথড এবং কন্সটেন্ট OOP ইনহেরিটেন্স OOP Abstract class এবং method OOP ইন্টারফেস OOP পলিমরফিজম OOP টাইপ হিন্টিং() OOP টাইপ হিন্টিনং ইন্টারফেস OOP স্ট্যাটিক মেথোড এবং প্রোপার্টি

 

অ্যাক্সেস মডিফায়ার

ক্লাসের মধ্যে প্রোপার্টি এবং মেথড থাকে। আর এই প্রোপার্টি এবং মেথড সমূহের তথ্যকে ক্লাসের বাইরে থেকে অ্যাক্সেস করার জন্য আমরা অ্যাক্সেস মডিফায়ার(access modifier) ব্যবহার করবো।


কেন অ্যাক্সেস মডিফায়ার ব্যবহার করবেন?

একটি ক্লাসের অন্তর্গত প্রোপার্টি এবং মেথডসমুহ ক্লাসের বাইরে থেকে অ্যাক্সেস করার অনুমতি আছে কিনা তা নির্ধারন করার জন্য অ্যাক্সেস মডিফায়ার ব্যবহার করা হয়। এটি অতিব প্রয়োজনীয়। কারন, আপনার প্রোগ্রামের তথ্য কোডসমুহ কে/কারা অ্যাক্সেস করতে পারবে তা আপনাকেই নির্ধারন করে দিতে হবে।

অ্যাক্সেস মডিফায়ার তিন ধরনের হয়। যথাঃ

  • public
  • private
  • protected

আমরা নিম্নে এগুলো সম্পর্কে বিস্তারিত আলোচনা করবোঃ


public অ্যাক্সেস মডিফায়ার

পূর্ববর্তী অধ্যায়ে আমরা এই অ্যাক্সেস মডিফায়ারটি অনেকবার ব্যবহার করেছি। আমরা যে সকল প্রোপার্টি এবং মেথডের পূর্বে public কীওয়ার্ড ব্যবহার করবো ঐ সকল প্রোপার্টি এবং মেথড সমুহকে ক্লাসের বাইরে থেকে যে কেউ অ্যাক্সেস করতে পারবে। নিম্নের উদাহরণটি লক্ষ্য করলেই বুঝতে পারবেনঃ

উদাহরণ
<?php
 class Greeting{

   public $name;
   public function hello(){
      echo "Hello ". $this->name.".";
    	  }
 }
//নতুন অবজেক্ট তৈরি করা
 $greeting = new Greeting();
 // name প্রোপার্টিকে ক্লাসের বাইরে থেকে অ্যাক্সেস করা হয়েছে।
 $greeting->name = "Tamjid";
 //hello() মেথডকে ক্লাসের বাইরে থেকে অ্যাক্সেস করা হয়েছে।
 $greeting->hello();

?>

ফলাফল
Hello Tamjid.

উপরের উদাহরণে $name প্রোপার্টি এবং hello() মেথড এর পূর্বে public কীওয়ার্ড ব্যবহারের ফলে এগুলোকে ক্লাসের বাইরে থেকে অ্যাক্সেস করা সম্ভব হয়েছে।


private অ্যাক্সেস মডিফায়ার

আমরা একটি ক্লাসের অন্তর্গত প্রোপার্টি এবং মেথডসমূহকে ক্লাসের বাইরে থেকে অ্যাক্সেস রোধ করতে পারি। এটি করার জন্য আমরা প্রোপার্টি এবং মেথড ঘোষণা করার সময় public কীওয়ার্ডের পরিবর্তে private কীওয়ার্ড ব্যবহার করবো।

নিম্নের উদাহরণে আমরা $name ভ্যারিয়েবলে public কীওয়ার্ড এর পরিবর্তে private কীওয়ার্ড ব্যবহার করেছিঃ

উদাহরণ
<?php
 class Greeting{

   private $name;
   public function hello(){
      echo "Hello ". $this->name.".";
    	  }
 }

 $greeting = new Greeting();
 $greeting->name = "Tamjid";
 $greeting->hello();

?>

ফলাফল
Fatal error: Cannot access private property Greeting::$name

$name প্রোপার্টির অ্যাক্সেস মডিফায়ার private হওয়ায় এটিকে আর ক্লাসের বাইরে থেকে অ্যাক্সেস করা সম্ভব না। এটি করার কারণেই একটি error পাওয়া গেছে।


Private প্রোপার্টিকে কিভাবে অ্যাক্সেস করবেন?

উপরের উদাহরণে আমরা দেখলাম, private প্রোপার্টিকে ক্লাসের বাইরে থেকে অ্যাক্সেস করার সময় একটি error উৎপন্ন হয়েছে। কিন্তু আমরা কোনো ধরণের error ছাড়াই private প্রোপার্টিকে অ্যাক্সেস করতে চাই।

Private প্রোপার্টিকে অ্যাক্সেস করার জন্য আমরা ক্লাস এর মধ্যে একটি public মেথড ব্যবহার করবো। কারন, public মেথডকে ক্লাসের বাইরে থেকেও অ্যাক্সেস করা যায়।

একটি ক্লাসে public মেথড সাধারনত দুই ধরনের হয়ে থাকেঃ

  • Setters: private প্রোপার্টির মান সেট করে।
  • Getters: private প্রোপার্টির মান আউটপুট দেয়।

নিম্নের উদাহরণে আমরা public মেথড setName() এর মাধ্যমে private প্রোপার্টি $name এর মান সেট করবো এবং getHello() এর মাধ্যমে সেটকৃত মান এর আউটপুট পাবোঃ

উদাহরণ
<?php
 class Greeting{

   private $name;
	 public function setName($fullName){
		 $this->name = $fullName;
	 }
   public function getHello(){
      echo "Hello ". $this->name.".";
    	  }
 }

 $greeting = new Greeting();
 $greeting->setName("Tamjid");
 $greeting->getHello();

?>

ফলাফল
Hello Tamjid.
নোটঃ private অ্যাক্সেস মডিফায়ার ব্যবহার করে আমরা একটি মেথড বা প্রোপার্টিকে ক্লাসের বাইরে থেকে সরাসরি অ্যাক্সেস করা থেকে রোধ করতে পারি।

protected অ্যাক্সেস মডিফায়ার

protected মডিফায়ারকেও সরাসরি ক্লাসের বাইরে থেকে অ্যাক্সেস করা যায় না। সরাসরি অ্যাক্সেস করতে চাইলে এটি একটি error তৈরি করে। নিম্নের উদাহরণটি লক্ষ্য করুনঃ

উদাহরণ
<?php
 class Greeting{

   protected $name;
   public function hello(){
      echo "Hello ". $this->name.".";
    	  }
 }

 $greeting = new Greeting();
 $greeting->name = "Tamjid";
 $greeting->hello();

?>

ফলাফল
Fatal error: Cannot access protected property Greeting::$name

আমরা protected অ্যাক্সেস মডিফায়ার সম্পর্কে পরবর্তীতে আলোচনা করবো।