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

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

হোম-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 স্ট্যাটিক মেথোড এবং প্রোপার্টি

 

পিএইচপি OOP স্ট্যাটিক মেথড এবং প্রোপার্টি

অনেক ক্ষেত্রে অবজেক্ট তৈরি করা ছাড়াই ক্লাস এর মেথড এবং প্রোপার্টি অ্যাক্সেস করার প্রয়োজন হয়, এমন পরিস্থিতিতে আমরা স্ট্যাটিক(static) মেথড এবং প্রোপার্টি ব্যবহার করবো।


স্ট্যাটিক মেথড এবং প্রোপার্টি কিভাবে ডিক্লেয়ার করবেন?

কোনো ক্লাসের মধ্যে স্ট্যাটিক(static) মেথড এবং প্রোপার্টি ডিক্লেয়ার(declare) করার জন্য সংরক্ষিত কীওয়ার্ড static ব্যবহার করা হয়। অর্থাৎ মেথড এবং প্রোপার্টির নামের পূর্বে অ্যাক্সেস মডিফায়ারের static কীওয়ার্ড ব্যবহার করতে হবে।

নিম্নে স্ট্যাটিক মেথড এবং প্রোপার্টি ডিক্লেয়ার করার সিনট্যাক্স দেওয়া হলোঃ

class ClassName {
	// স্ট্যাটিক প্রোপার্টি ডিক্লেয়ার
	static public proertyName;
	// স্ট্যাটিক মেথড ডিক্লেয়ার
	static public function methodName() {
		// মেথডের কোড সমুহ এখানে থাকবে
	}
}

আশাকরি উপরের সিনট্যাক্সটি দেখেই আপনার কাছে স্ট্যাটিক এর ধারনা অনেকটা স্পষ্ট হয়ে গেছে। টিউটোরিয়ালের পরবর্তী অংশে আমরা স্ট্যাটিক মেথড এবং প্রোপার্টির উদাহরণ দেখবো।


স্ট্যাটিক মেথড এবং প্রোপার্টি কিভাবে অ্যাক্সেস করবেন?

আমরা টিউটোরিয়ালের প্রথমেই জেনেছি যে, কোনো স্ট্যাটিক(static) মেথড এবং প্রোপার্টিকে অ্যাক্সেস করার জন্য অবজেক্টের প্রয়োজন হয় না। বরং আমরা স্কোপ রিজোলিউশন অপারেটর(::) ব্যবহার করে এগুলোকে সরাসরি অ্যাক্সেস করতে পারি।

নিম্নে স্ট্যাটিক মেথড এবং প্রোপার্টি অ্যাক্সেস করার সিনট্যাক্স দেওয়া হলোঃ


// স্ট্যাটিক প্রোপার্টিতে মান ডিফাইন
ClassName::$propertyName = value;

// স্ট্যাটিক মেথড এবং প্রোপার্টির আউটপুট
echo ClassName::$propertyName;
echo ClassName::methodName();

সতর্কতাঃ স্ট্যাটিক প্রোপার্টিসমুহ অ্যাক্সেস করার সময় অবশ্যই ডলার($) চিহ্ন ব্যবহার করতে হবে।


স্ট্যাটিক মেথড এবং প্রোপার্টি কিভাবে ক্লাসের মধ্য থেকে অ্যাক্সেস করবেন?

আমরা সাধারনত $this কীওয়ার্ড ব্যবহার করে ক্লাসের মেথড এবং প্রোপার্টিসমুহকে একই ক্লাসের মধ্য থেকে অ্যাক্সেস করতে পারি। ঠিক একই পদ্ধতি অবলম্বন করে আমরা স্ট্যাটিক মেথড এবং প্রোপার্টিসমূহ অ্যাক্সেস করবো। তবে এই ক্ষেত্রে আমরা সংরক্ষিত কীওয়ার্ড this এর পরিবর্তে self এবং এর সাথে স্কোপ রিজোলিউশন অপারেটর(::) ব্যবহার করবো।

নিম্নে স্ট্যাটিক মেথড এবং প্রোপার্টিকে একই ক্লাসের মধ্য থেকে অ্যাক্সেস করার সিনট্যাক্স দেওয়া হলোঃ

class ClassName {
	// স্ট্যাটিক প্রোপার্টি ডিক্লেয়ার
	static public proertyName;
	// স্ট্যাটিক মেথড ডিক্লেয়ার
	static public function methodName($value) {
		self::$propertyName = $value;
	}
}

এখন পর্যন্ত আমরা অনেকগুলো সিনট্যাক্স দেখলাম। এবার আমরা স্ট্যাটিক মেথড এবং প্রোপার্টির একটি উদাহরণ দেখবোঃ

উদাহরণ
<?php
	class Add {
		static public $number;

		static public function setNumber($value) {
			self::$number += $value;
		}
	}

	Add::setNumber(5);
	echo Add::$number;
	echo "<br>";
	Add::setNumber(5);
	echo Add::$number;
	echo "<br>";
	Add::setNumber(5);
	echo Add::$number;
?>

ফলাফল
5
10
15

স্ট্যাটিক মেথড এবং প্রোপার্টি কখন ব্যবহার করবেন?

স্ট্যাটিক মেথড এবং প্রোপার্টি ব্যবহার করা খুব ভালো অভ্যাস নয়। যাইহোক, এটি ব্যবহার করলে আমরা অবজেক্ট তৈরি করা ছাড়াই সরাসরি মেথড এবং প্রোপার্টিকে অ্যাক্সেস করতে পারি। বিশেষকরে আমরা কাউন্টার(Counter) এবং উটিলিটি(Utility) ক্লাসের ক্ষেত্রে স্ট্যাটিক(static) মেথড এবং প্রোপার্টি ব্যবহার করবো।

কাউন্টার এর ক্ষেত্রে

আমরা কাউন্টার এর জন্য স্ট্যাটিক প্রোপার্টি ব্যবহার করি। কারণ স্ট্যাটিক প্রোপার্টিসমূহ সর্বশেষ অ্যাসাইনকৃত মান সংরক্ষন করে রাখতে পারে। নিম্নে এর একটি উদাহরণ দেখবোঃ

উদাহরণ
<?php
	class Add {
		static public $number = 5;

		static public function setNumber() {
			self::$number++;
		}
	}

	echo Add::$number;
	echo "<br>";
	Add::setNumber();
	echo Add::$number;
	echo "<br>";
	Add::setNumber();
	echo Add::$number;
?>

ফলাফল
5
6
7

ইউটিলিটি ক্লাসের ক্ষেত্রে

ইউটিলিটি ক্লাসের ক্ষেত্রে সচরাচর স্ট্যাটিক মেথড ব্যবহৃত হয়। ইউটিলিটি ক্লাস গুলোর একমাত্র উদ্দেশ্য হচ্ছে প্রধান ক্লাস গুলোকে সাহায্য করা। ইউটিলিটি মেথডসমূহ সব ধরনের কার্য সম্পাদন করতে পারে। যেমনঃ পরিমাপের সিস্টেম, ডেটা এনক্রিপশন, স্যানিটেশন এবং অন্য যে কোনো কাজ যা আমাদের মূল অ্যাপ্লিকেশনের জন্য অনেক বড় সহায়ক।

নিম্নের উদাহরণে আমরা একটি স্ট্যাটিক মেথড ব্যবহার করবো যা ব্যবহারকারীকে আর্গুমেন্ট লিংকে রি-ডাইরেক্ট করবেঃ

উদাহরণ
<?php
	class UserRedirect {
	  // মেথডটি পিএইচপি হেডার ফাংশন ব্যবহার করে ব্যবহারকারীকে রি-ডাইরেক্ট করে
	  static public function redirect($link) {
	    header("Location: $link");
	    exit;
	  }
	}

	UserRedirect::redirect("http://www.sattacademy.com");
?>

স্ট্যাটিক ব্যবহারে সতর্কতা অবলম্বন করা উচিত

আপনার নিজের সুবিধার জন্য স্ট্যাটিক ব্যবহার করা উচিৎ নয়। এটি অবশ্যই যেন ইউটিলিটি ক্লাস বা সাহায্যকারী ক্লাসের জন্য ব্যবহার করা হয়।

আপনি হয়ত স্ট্যাটিক মেথড এবং প্রোপার্টি ব্যবহার করার চিন্তা করছেন। কারণ এটির ব্যবহারঅনেক সুবিধাজনক এবং অবজেক্ট তৈরি না করেই স্ট্যাটিক মেথড এবং প্রোপার্টিকে অ্যাক্সেস করা যায়।

স্ট্যাটিক মেথড ব্যবহারে সব সময় সতর্ক থাকুন, কারণ এটি ব্যবহারে আপনি নিম্নের প্রধান দুটি অসুবিধার সম্মূখিন হতে পারেনঃ

  • স্ট্যাটিক মেথড বিশিষ্ট ক্লাসসমূহ স্বয়ংক্রিয়ভাবে পরীক্ষা করা অনেক কঠিন।
  • স্ট্যাটিক মেথড এবং প্রোপার্টিগুলো গ্লোবাল হওয়ার কারণে যে কোনো জায়গা থেকে অ্যাক্সেস করা যায়। এই বিষয়টি আমরা যতটা সম্ভব এড়ানোর চেষ্টা করি।

সুতরাং আপনি নিশ্চয় অসুবিধার জন্য স্ট্যাটিক ব্যবহার করবেন না। বরং সুবিধার জন্য ইউটিলিটি ক্লাসে এটি ব্যবহার করবেন।