আমি জানি ডায়নামিকালি টাইপ করা ভাষা কখনই বিকাশকারীদের ভেরিয়েবলের প্রকারগুলি নির্দিষ্ট করতে দেয় না, বা কমপক্ষে এর জন্য খুব সীমাবদ্ধ সমর্থন দেয়।
উদাহরণস্বরূপ জাভাস্ক্রিপ্ট যখন সুবিধাজনক হয় তখন ধরণের ভেরিয়েবল প্রয়োগের জন্য কোনও ব্যবস্থা সরবরাহ করে না। পিএইচপি আপনি পদ্ধতি আর্গুমেন্ট কিছু ধরনের উল্লেখ করা যাক, কিন্তু নেটিভ প্রকার (ব্যবহার করতে কোন উপায় নেই int
, string
আর্গুমেন্ট জন্য, ইত্যাদি), এবং সেখানে আর্গুমেন্ট ছাড়া অন্য কিছুর জন্য ধরনের জোরদার করা কোনও উপায় নেই।
একই সাথে, ম্যানুয়ালি টাইপ চেক না করে কিছু ক্ষেত্রে একটি পরিবর্তনশীল টাইপ করা ভাষায় ভেরিয়েবলের ধরণ নির্দিষ্ট করার পছন্দ করা সুবিধাজনক হবে।
কেন এমন সীমাবদ্ধতা রয়েছে? এটি কি প্রযুক্তিগত / পারফরম্যান্সের কারণে (আমি মনে করি এটি জাভাস্ক্রিপ্টের ক্ষেত্রে রয়েছে), বা কেবল রাজনৈতিক কারণে (যা আমি বিশ্বাস করি, পিএইচপি-র ক্ষেত্রে)? এটি অন্যান্য গতিময় টাইপ করা ভাষার জন্য একটি কেস যার সাথে আমি পরিচিত নই?
সম্পাদনা করুন: উত্তর এবং মন্তব্য অনুসরণ করে, এখানে একটি স্পষ্টির জন্য একটি উদাহরণ রয়েছে: আসুন আমরা ধরা যাক আমাদের সাধারণ প্যাকেজ পিএইচপিতে নিম্নলিখিত পদ্ধতি রয়েছে:
public function CreateProduct($name, $description, $price, $quantity)
{
// Check the arguments.
if (!is_string($name)) throw new Exception('The name argument is expected to be a string.');
if (!is_string($description)) throw new Exception('The description argument is expected to be a string.');
if (!is_float($price) || is_double($price)) throw new Exception('The price argument is expected to be a float or a double.');
if (!is_int($quantity)) throw new Exception('The quantity argument is expected to be an integer.');
if (!$name) throw new Exception('The name argument cannot be an empty string.');
if ($price <= 0) throw new Exception('The price argument cannot be less or equal to zero.');
if ($price < 0) throw new Exception('The price argument cannot be less than zero.');
// We can finally begin to write the actual code.
// TODO: Implement the method here.
}
কিছু প্রচেষ্টা সহ, এটি পুনরায় লেখা যেতে পারে (এছাড়াও পিএইচপি চুক্তিতে প্রোগ্রামিং দেখুন ):
public function CreateProduct($name, $description, $price, $quantity)
{
Component::CheckArguments(__FILE__, __LINE__, array(
'name' => array('value' => $name, 'type' => VTYPE_STRING),
'description' => array('value' => $description, 'type' => VTYPE_STRING),
'price' => array('value' => $price, 'type' => VTYPE_FLOAT_OR_DOUBLE),
'quantity' => array('value' => $quantity, 'type' => VTYPE_INT)
));
if (!$name) throw new Exception('The name argument cannot be an empty string.');
if ($price <= 0) throw new Exception('The price argument cannot be less or equal to zero.');
if ($price < 0) throw new Exception('The price argument cannot be less than zero.');
// We can finally begin to write the actual code.
// TODO: Implement the method here.
}
তবে পিএইচপি বিকল্প হিসাবে যুক্তির জন্য দেশীয় প্রকারগুলি গ্রহণ করে যদি একই পদ্ধতিটি নীচে লেখা হয়:
public function CreateProduct(string $name, string $description, double $price, int $quantity)
{
// Check the arguments.
if (!$name) throw new Exception('The name argument cannot be an empty string.');
if ($price <= 0) throw new Exception('The price argument cannot be less or equal to zero.');
if ($price < 0) throw new Exception('The price argument cannot be less than zero.');
// We can finally begin to write the actual code.
// TODO: Implement the method here.
}
কোনটি লিখতে খাটো? কোনটি পড়া সহজ?