ফাংশন ডিক্লেয়ারেশনের সময় আরগুমেন্ট এর জন্য প্রত্যাশিত ডেটা টাইপ( (arrays, objects, interface ইত্যাদি) নির্ধারণ করে দেওয়ার জন্য টাইপ হিন্টিং(type hinting) ব্যবহৃত হয়।
পিএইচপি OOP টাইপ হিন্টিং
আমাদের এই টিউটোরিয়ালে আমরা array এবং object এর জন্য টাইপ হিন্টিং নিয়ে আলোচনা করবো যা পিএইচপি এবং পিএইচপি৭ উভয়েই সমর্থন করে।
এছাড়া মূল ডেটা টাইপ যেমনঃ ইন্টিজার, ফ্লোট, স্ট্রিং এবং বুলিয়ানের জন্যও টাইপ হিন্টিং ব্যাখ্যা করবো যা শুধমাত্র পিএইচপি৭ এ সমর্থিত।
array টাইপ হিন্টিং
যখন আমরা কোনো ফাংশনের আরগুমেন্ট শুধুমাত্র array টাইপের পেতে চাই সেক্ষেত্রে আমরা ফাংশনের আরগুমেন্টের সামনে array কীওয়ার্ড ব্যবহার করবো। নিম্নে এর সিনট্যাক্স দেওয়া হলোঃ
kt_satt_skill_example_id=693
এখন আমরা একটি ফাংশন তৈরি করবো যা গণনা করবে গ্যাস ভর্তি ট্যাঙ্ক বিশিষ্ট একটি ট্রাক কত মাইল যেতে পারবে। আমাদের এই ফাংশনটি আর্গুমেন্ট হিসাবে শুধুমাত্র অ্যারে টাইপের ডেটা গ্রহন করবে। কারণ আর্গুমেন্টের নামের পূর্বে আমরা array কীওয়ার্ড ব্যবহার করেছি।
kt_satt_skill_example_id=696
এখন আমরা এই ফাংশনের মধ্যে দিয়ে একটি আর্গুমেন্ট পাস করাবো যা অ্যারে টাইপের নাঃ
kt_satt_skill_example_id=697
এই আর্গুমেন্টের জন্য একটি ত্রুটি পাওয়া যাবে। কারণ আমাদের এই ফাংশনটি শুধুমাত্র অ্যারে টাইপের আর্গুমেন্ট গ্রহন করতে সক্ষম। কিন্তু আমরা স্ট্রিং টাইপের আর্গুমেন্ট পাস করেছি বিধায় এই ত্রুটি পাওয়া গেছে।
এখন আমরা পুণরায় calcMiles() ফাংশনটিতে আর্গুমেন্ট পাস করাবো। তবে, এইবার আমরা array টাইপের আর্গুমেন্ট পাস করবোঃ
kt_satt_skill_example_id=698
এই ক্ষেত্রে আমাদের ফাংশনটি কাজ করেছে এবং সঠিক ফলাফল দিয়েছে। কারণ এইবার আমরা ফাংশন অনুযায়ী অ্যারে টাইপের আর্গুমেন্ট পাস করেছি।
অবজেক্ট টাইপ হিন্টিং
আমরা টাইপ হিন্টিং ব্যবহার করে যে কোনো ফাংশনে জোরপূর্বক অবজেক্ট আর্গুমেন্ট পাস করাতে পারি। এটা করার জন্য আমরা ঐ ফাংশনের মধ্যে আর্গুমেন্টের পূর্বে ক্লাসের নামটি বসিয়ে দিব।
নিম্নের উদাহরণে আমরা Truck ক্লাসে constructor ফাংশনের মধ্যে Driver ক্লাসের অবজেক্ট পাস করাবো। এটা করার জন্য আমরা constructor ফাংশনের আর্গুমেন্টের পূর্বে Driver কীওয়ার্ড ব্যবহার করবোঃ
kt_satt_skill_example_id=699
পিএইচপি কি সাধারন ডেটা টাইপ এর জন্য টাইপ হিন্টিং সমর্থন করে?
এটি নির্ভরযোগ্য।
পিএইচপি৫ ভার্সন সাধারন ডেটা টাইপ(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।
নিম্নের উদাহরণটি শুধুমাত্র পিএইচপি ৭ ভার্সনে সমর্থন করেঃ
kt_satt_skill_example_id=700
Read more