টাইপ জাগলিংকে টাইপ কোয়ার্শনও বলা হয়। টাইপ জাগলিং হলো যখন ভিন্ন টাইপের দুটি মান কোনো অপারেশন করার জন্য একই টাইপে রূপান্তরিত হয়।
$baskets = 5 // int
$apples_per_basket = "3" // string
$baskets * $apples_per_basket
# => 15
এটি অন্তর্নিহিতভাবে (উপরের উদাহরণ দেখুন) করা যায়, অথবা C-স্টাইলের টাইপ কাস্টিং দিয়ে স্পষ্টভাবে করা যায়:
$apples_per_basket = "3" // string
$my_number = (int) $apples_per_basket // cast string to int
# => 3 // int
ম্যানুয়াল টাইপ কাস্টিংয়ের জন্য অনুমোদিত টাইপগুলো হলো: bool, int, float, string, array, object.
সাধারণত, একটি ইন্টিজারকে (int) একটি ফ্লোটে (float) বা এর বিপরীতে পরিবর্তন করতে টাইপ কাস্টিং ব্যবহার করা হয়।
আপনার বন্ধু Kojo সংখ্যার বড় ভক্ত। সংখ্যা নিয়ে খেলার জন্য তাঁর একটি ছোট ওয়েবসাইট আছে। Kojo প্রোগ্রামিংয়ে তেমন ভালো নন, তাই তিনি আপনার সাহায্য চেয়েছেন।
আপনি Kojo-এর ওয়েবসাইটে নতুন সংখ্যার গেমের জন্য দুটি হেল্পার মেথড বানাবেন, আর তৃতীয়টি বানাবেন ব্যবহারকারীর দেওয়া কিছু ইনপুট যাচাই করার জন্য।
Kojo-এর ওয়েবসাইটের একটি গেম দেখতে স্লট মেশিনের মতো, যাতে ডিজিট বসানো চাকার দুটি দল দেখা যায়। ডিজিটের প্রতিটি দল একটি সংখ্যা প্রকাশ করে। গেমের মেকানিক্সের জন্য Kojo-কে ওই দুটি সংখ্যার যোগফল জানতে হবে।
এমন একটি মেথড sumUp লিখুন, যা প্যারামিটার হিসেবে দুটি অ্যারে নেয়।
প্রতিটি অ্যারেতে 0 থেকে 9-এর মধ্যে এক বা একাধিক ডিজিট থাকে।
ফাংশনটির উচিত প্রতিটি অ্যারেকে একটি সংখ্যা হিসেবে ধরে নিয়ে ওই দুটি সংখ্যার যোগফল রিটার্ন করা।
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->sumUp([1, 2, 3], [0, 7]);
//=> 130
// [1, 2, 3] represents 123 and [0, 7] represents 7.
// 123 + 7 = 130
ওয়েবসাইটের আরেকটি গেম হলো "Lucky Numbers" নামের একটি ছোট কুইজ। একজন ব্যবহারকারী একটি সংখ্যা লিখতে পারেন, তারপর দেখতে পান সংখ্যাটি কোনো গোপন সিকোয়েন্স বা প্যাটার্নের অন্তর্ভুক্ত কি না। "lucky numbers"-এর সিকোয়েন্স বা প্যাটার্ন প্রতি মাসে বদলে যায়, আর প্রতিটি ব্যবহারকারীর তা অনুমান করার জন্য সীমিত সংখ্যকবার চেষ্টা থাকে।
এই মাসের lucky numbers হওয়া উচিত এমন সংখ্যা, যেগুলো প্যালিনড্রোম। প্যালিনড্রোমিক সংখ্যা ডিজিট উল্টে দিলেও একই থাকে।
নতুন isPalindrome ফাংশনটি লিখুন, যা প্যারামিটার হিসেবে একটি ইন্টিজার নেয়।
সংখ্যাটি প্যালিনড্রোম হলে ফাংশনটির true রিটার্ন করা উচিত, নাহলে false।
ইনপুট সংখ্যাটি সবসময় একটি ধনাত্মক ইন্টিজার হবে।
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->isPalindrome(1441);
//=> true
$lucky_numbers->isPalindrome(123);
//=> false
ওয়েবসাইটের নানা জায়গায় ইনপুট ফিল্ড আছে, যেখানে ব্যবহারকারীরা সংখ্যা লিখতে পারেন এবং কোনো কাজ শুরু করতে একটি বোতামে ক্লিক করতে পারেন। Kojo তাঁর সাইটের ইউজার এক্সপেরিয়েন্স উন্নত করতে চান। ব্যবহারকারী বোতামে ক্লিক করলেও ফিল্ডে যদি অবৈধ কোনো ইনপুট মান থাকে, তখন তিনি একটি এরর মেসেজ দেখাতে চান।
ইনপুট ফিল্ডের মান কীভাবে দেওয়া হয়, সে সম্পর্কে আরও কিছু তথ্য এখানে।
এমন একটি ফাংশন validate লিখুন, যা প্যারামিটার হিসেবে ব্যবহারকারীর ইনপুট নেয়।
ব্যবহারকারী কোনো ইনপুট না দিলে validate-এর 'Required field' রিটার্ন করা উচিত।
ইনপুটটি যদি (PHP টাইপ কাস্টিং নিয়ম অনুযায়ী) শূন্যের চেয়ে বড় ধনাত্মক পূর্ণসংখ্যা না হয়, তবে 'Must be a whole number larger than 0' রিটার্ন করা উচিত।
বাকি সব ক্ষেত্রে ধরে নিতে পারেন ইনপুটটি বৈধ, তখন রিটার্ন ভ্যালু একটি খালি স্ট্রিং হবে।
<?php
$lucky_numbers = new LuckyNumbers()
$lucky_numbers->validate('123');
// => ''
$lucky_numbers->validate('');
// => 'Required field'
$lucky_numbers->validate('abc');
// => 'Must be a whole number larger than 0'
Exercism-এ সাইন আপ করুন, PHP ট্র্যাকের 11টি কনসেপ্ট122টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।