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

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

হোম-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 ইন্টারফেস

প্যারেন্ট ক্লাস চাইল্ড ক্লাসের সাথে এই অঙ্গীকার করে যে, মেথড বাস্তবায়নের জন্য চাইল্ড ক্লাস প্যারেন্ট ক্লাস এর abstract মেথডসমূহ এক্সেস করতে পারবে।

সুতরাং একটি ইন্টারফেস(interfaces) এর অ্যাবস্ট্রাক্ট মেথডসমুহকে তার অন্তর্ভুক্ত চাইল্ড ক্লাসে অবশ্যই বাস্তবায়ন করতে হবে। যখন অনেক প্রোগ্রামার একত্রে কাজ করে তখন এটির ব্যবহার অনেক সুবিধাজনক। কারণ, প্রোগ্রামাররা যে মেথডসমুহ নিয়ে নিয়ে কাজ করবে তা ইন্টারফেসে পূর্বে থেকেই নির্ধারণ করে দেওয়া থাকে।


কিভাবে ইন্টারফেস ডিক্লেয়ার করবেন?

আপনি interface কীওয়ার্ড ব্যবহার করে নিম্নের মত ইন্টারফেস ডিক্লেয়ার করতে পারেনঃ

interface interfaceName {
  // মেথড সমূহ
}

অ্যাবস্ট্রাক্ট মেথড এবং কনস্ট্যান্ট ব্যাতিত ইন্টারফেস অ্যাবস্ট্রাক্ট ক্লাসের মতই। ইন্টারফেসের মধ্যে কোনো প্রোপার্টি থাকে না, শুধুমাত্র public মেথড থাকে।

এখন আমরা Truck নামে একটি ইন্টারফেস ক্লাস তৈরি করবো যা সব ধরণের ট্রাক কে হ্যান্ডেল করবে এবং এটা নিশ্চিত করবে যে, এর সকল চাইল্ড ক্লাসে setTruckModel() এবং getTruckModel() মেথড এর বাস্তবায়ন ঘটাবেঃ

উদাহরণ
<?php
interface Truck {
  // মেথড সমূহ
	public function setTruckModel($name);

	public function getTruckModel();
}
?>

কিভাবে চাইল্ড ক্লাসে ইন্টারফেস সংযুক্ত করবেন?

implements কীওয়ার্ড ব্যবহার করে চাইল্ড ক্লাসে ইন্টারফেস সংযুক্ত করতে হয়ঃ

class Child implements interfaceName {
  // ইন্টারফেসের মেথড সমুহকে ডিফাইন করে
}

এখন আমরা TruckDetails নামে Truck ইন্টারফেসের একটি চাইল্ড ক্লাস তৈরি করবো এবং এতে Truck ইন্টারফেস থেকে ইনহেরিটকৃত প্যারামিটারসহ সকল মেথড ডিফাইন করবোঃ

class TruckDetails implements Truck {
  private $model;

  public function setTruckModel($name) {
    $this->model = $name;
  }

  public function getTruckModel() {
    return $this->model;
  }
}

চাইল্ড ক্লাসে কি একাধিক ইন্টারফেস সংযুক্ত করা যায়?

হ্যাঁ, অবশ্যই। আমরা একটি চাইল্ড ক্লাসে অসংখ্য ইন্টারফেস সংযুক্ত করতে পারি। একটি ক্লাসে একাধিক ইন্টারফেস সংযুক্ত করার জন্য কমা(,) চিহ্ন ব্যবহার করে ইন্টারফেসসমূহক পৃথক করা হয়।

একাধিক ইন্টারফেস যুক্ত করার সিনট্যাক্স

class Child implements Interface1, Interface2,...,InterfaceN

এখন আমরা ভিন্ন একটি ইন্টারফেস তৈরি করবো যাতে দুইটি মেথড ডিক্লেয়ার করবো। যথা- setHasWheels() যা বুলিয়ান মান ধারন করবে এবং getHasWheels() যা ট্রাক এর চাকা আছে কিনা আউটপুট দিবে।

interface Wheels {
  public function setHasWheels($bool);

  public function getHasWheels();
}

এখন আমাদের চাইল্ড ক্লাসে উপরের দুইটি ইন্টারফেস সংযুক্ত করবোঃ

class TruckDetails implements Truck, Wheels {
  private $model;
  private $hasWheels;

  public function setTruckModel($name) {
    $this->model = $name;
  }

  public function getTruckModel() {
    return $this->model;
  }

  public function setHasWheels($bool) {
    $this->hasWheels = $bool;
  }

  public function getHasWheels() {
  	return ($this->hasWheels)? "Has wheels" : "No wheels";
  }
}

এখন আমরা চাইল্ড ক্লাস থেকে অবজেক্ট তৈরি করবো এবং ফলাফল আউটপুট নিবঃ

// অবজেক্ট তৈরি
$truckdetails = new TruckDetails();
// মান সেট
$truckdetails->setTruckModel("Toyota");
$truckdetails->setHasWheels(true);
// ফলাফল আউটপুট
echo $truckdetails->getTruckModel();
echo $truckdetails->getHasWheels();

ফলাফল
Toyota Has wheels

ইন্টারফেস এবং অ্যাবস্ট্রাক্ট ক্লাসের মধ্যে পার্থক্য

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

  • ইন্টারফেসের মধ্যে অ্যাবস্ট্রাক্ট মেথড ও কনস্ট্যান্ট থাকে এবং কনক্রিট(concrete) ভ্যারিয়েবল এবং মেথড ধারন করে না, কিন্তু অ্যাবস্ট্রাক্ট ক্লাস অ্যাবস্ট্রাক্ট মেথড, কনস্ট্যান্ট, কনক্রিট(concrete) ভ্যারিয়েবল এবং মেথড ধারন করে।
  • ইন্টারফেসে ক্লাসের সকল মেথড অবশ্যই public হতে হবে, কিন্তু অ্যাবস্ট্রাক্ট ক্লাস সকল অ্যাক্সেস মডিফায়ার সমর্থন করে।
  • একটি চাইল্ড ক্লাস একাসাথে একাধিক ইন্টারফেস ব্যবহার করতে পারে, কিন্তু অ্যাবস্ট্রাক্ট ক্লাসের ক্ষেত্রে চাইল্ড ক্লাস একের অধিক অ্যাবস্ট্রাক্ট ক্লাস থেকে ইনহেরিট হতে পারে না।

নিম্নের টেবিলে পার্থক্য গুলো সারাশং আকারে দেখানো হলোঃ

ইন্টারফেস এবং অ্যাবস্ট্রাক্ট ক্লাসের মধ্যে পার্থক্য
ইন্টারফেস অ্যাবস্ট্রাক্ট ক্লাস
কোড অ্যাবস্ট্রাক্ট মেথড, কনস্ট্যান্ট অ্যাবস্ট্রাক্ট মেথড, কনস্ট্যান্ট, কনক্রিট মেথড, কনক্রিট ভ্যারিয়েবল
অ্যাক্সেস মডিফায়ার public public
private
protected
প্যারেন্ট ক্লাসের সংখ্যা একটি চাইল্ড ক্লাসের একাধিক প্যারেন্ট ক্লাস বা ইন্টারফেস থাকতে পারে। একটি চাইল্ড ক্লাসের শুধুমাত্র একটি প্যারেন্ট ক্লাস বা অ্যাবস্ট্রাক্ট থাকবে।