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

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

হোম-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 টাইপ হিন্টিং

ফাংশন ডিক্লেয়ারেশনের সময় আরগুমেন্ট এর জন্য প্রত্যাশিত ডেটা টাইপ( (arrays, objects, interface ইত্যাদি) নির্ধারণ করে দেওয়ার জন্য টাইপ হিন্টিং(type hinting) ব্যবহৃত হয়।


পিএইচপি OOP টাইপ হিন্টিং

আমাদের এই টিউটোরিয়ালে আমরা array এবং object এর জন্য টাইপ হিন্টিং নিয়ে আলোচনা করবো যা পিএইচপি এবং পিএইচপি৭ উভয়েই সমর্থন করে।

এছাড়া মূল ডেটা টাইপ যেমনঃ ইন্টিজার, ফ্লোট, স্ট্রিং এবং বুলিয়ানের জন্যও টাইপ হিন্টিং ব্যাখ্যা করবো যা শুধমাত্র পিএইচপি৭ এ সমর্থিত।


array টাইপ হিন্টিং

যখন আমরা কোনো ফাংশনের আরগুমেন্ট শুধুমাত্র array টাইপের পেতে চাই সেক্ষেত্রে আমরা ফাংশনের আরগুমেন্টের সামনে array কীওয়ার্ড ব্যবহার করবো। নিম্নে এর সিনট্যাক্স দেওয়া হলোঃ

<?php
	function functionName (array $argumentName){
	  // কোড এখানে থাকবে
	}
?>

এখন আমরা একটি ফাংশন তৈরি করবো যা গণনা করবে গ্যাস ভর্তি ট্যাঙ্ক বিশিষ্ট একটি ট্রাক কত মাইল যেতে পারবে। আমাদের এই ফাংশনটি আর্গুমেন্ট হিসাবে শুধুমাত্র অ্যারে টাইপের ডেটা গ্রহন করবে। কারণ আর্গুমেন্টের নামের পূর্বে আমরা array কীওয়ার্ড ব্যবহার করেছি।

উদাহরণ
<?php
	function calcMiles(array $models) {

	  foreach($models as $item) {

	    echo $truckModel = $item[0] . " : ";
	    echo $numberOfMiles = $item[1] * $item[2] .  "<br/>";
	   }
	}
?>

এখন আমরা এই ফাংশনের মধ্যে দিয়ে একটি আর্গুমেন্ট পাস করাবো যা অ্যারে টাইপের নাঃ

calcMiles("Toyota");

এই আর্গুমেন্টের জন্য একটি ত্রুটি পাওয়া যাবে। কারণ আমাদের এই ফাংশনটি শুধুমাত্র অ্যারে টাইপের আর্গুমেন্ট গ্রহন করতে সক্ষম। কিন্তু আমরা স্ট্রিং টাইপের আর্গুমেন্ট পাস করেছি বিধায় এই ত্রুটি পাওয়া গেছে।

ফলাফল
Catchable fatal error: Argument 1 passed to calcMiles() 
must be of the type array, string given

এখন আমরা পুণরায় calcMiles() ফাংশনটিতে আর্গুমেন্ট পাস করাবো। তবে, এইবার আমরা array টাইপের আর্গুমেন্ট পাস করবোঃ

<?php
	$models = array(
	  array('Toyota', 6, 22),
	  array('Mahindra', 5, 20)
	);

	calcMiles($models);
?>

ফলাফল

Toyota : 132
Mahindra : 100

এই ক্ষেত্রে আমাদের ফাংশনটি কাজ করেছে এবং সঠিক ফলাফল দিয়েছে। কারণ এইবার আমরা ফাংশন অনুযায়ী অ্যারে টাইপের আর্গুমেন্ট পাস করেছি।

অবজেক্ট টাইপ হিন্টিং

আমরা টাইপ হিন্টিং ব্যবহার করে যে কোনো ফাংশনে জোরপূর্বক অবজেক্ট আর্গুমেন্ট পাস করাতে পারি। এটা করার জন্য আমরা ঐ ফাংশনের মধ্যে আর্গুমেন্টের পূর্বে ক্লাসের নামটি বসিয়ে দিব।

নিম্নের উদাহরণে আমরা Truck ক্লাসে constructor ফাংশনের মধ্যে Driver ক্লাসের অবজেক্ট পাস করাবো। এটা করার জন্য আমরা constructor ফাংশনের আর্গুমেন্টের পূর্বে Driver কীওয়ার্ড ব্যবহার করবোঃ

উদাহরণ

<?php
	class Truck {
	  protected $driver;

	  // constructor ফাংশনটি আর্গুমেন্ট হিসাবে Driver অবজেক্ট গ্রহন করবে
	  public function __construct(Driver $driver)
	  {
	    $this->driver = $driver;
	  }
	}


	class Driver {}


	$driver = new Driver();
	$truck  = new Truck($driver);
?>

পিএইচপি কি সাধারন ডেটা টাইপ এর জন্য টাইপ হিন্টিং সমর্থন করে?

এটি নির্ভরযোগ্য।

পিএইচপি৫ ভার্সন সাধারন ডেটা টাইপ(integer, float, string এবং boolean) এর জন্য টাইপ হিন্টিং সমর্থন করে না। কিন্তু পিএইচপি৭ ভার্সনে সাধারন ডেটা টাইপ এর জন্য স্কেলার(scalar) টাইপ হন্টিং সমর্থন করে।

যেহেতু পিএইচপি৫ ভার্সন সাধারন ডেটা টাইপ(integer, float, string এবং boolean) এর জন্য টাইপ হিন্টিং সমর্থন করে না, সেহেতু কোনো আর্গুমেন্টে সাধারন ডেটা টাইপকে ভ্যালিডেট করার প্রয়োজন হলে আমরা পিএইচপি "is_" ফাংশনটি ব্যবহার করবো।

উদাহরণ স্বরূপঃ

  • is_bool() - ফাংশন ভ্যারিয়েবলটি বুলিয়ান(boolean) কিনা চেক করে।
  • is_int() - ফাংশন ভ্যারিয়েবলটি ইন্টিজার(integer) বা পূর্ণ সংখ্যা কিনা চেক করে।
  • is_float() - ফাংশন ভ্যারিয়েবলটি ফ্লোট(float) বা দশমিক সংখ্যা কিনা চেক করে।
  • is_null() - ফাংশন ভ্যারিয়েবলটি নাল(null) বা ফাঁকা কিনা চেক করে।
  • is_string() - ফাংশন ভ্যারিয়েবলটি স্ট্রিং(string) কিনা চেক করে।

আর পিএইচপি৭ ভার্সনের ক্ষেত্রে সাধারন ডেটা টাইপ হিসাবে স্কেলার(scalar) টাইপ হিন্টিং সমর্থন করে। যথাঃ integer, float, string এবং boolean।

নিম্নের উদাহরণটি শুধুমাত্র পিএইচপি ৭ ভার্সনে সমর্থন করেঃ

উদাহরণ

<?php
	class Truck {
	  protected $model;
	  protected $hasBody;
	  protected $numberOfTires;
	  protected $price;

	  // স্ট্রিং(string) টাইপ হিন্টিং
	  public function setModel(string $model){
	    $this->model = $model;
	  }

	  // বুলিয়ান(boolean) টাইপ হিন্টিং
	  public function setHasBody(bool $value){
	    $this->hasBody = $value;
	  }

	  // ইন্টিজার(integer) টাইপ হিন্টিং
	  public function setNumberOfTires(int $value){
	    $this->numberOfTires = $value;
	  }

	  // ফ্লোট(float) টাইপ হিন্টিং
	  public function setPrice(float $value){
	    $this->price = $value;
	  }
	}

?>