Coercive এবং Strict Mode এর পার্থক্য

Scalar Type Declarations (স্কেলার টাইপ ডিক্লারেশন) - পিএইচপি (PHP 7) - Computer Programming

439

PHP 7 এ স্কেলার টাইপ ডিক্লারেশন ব্যবহারে Coercive Mode এবং Strict Mode নামের দুটি ভিন্ন মোড আছে। এই মোড দুটি টাইপ চেকিং এবং টাইপ কনভার্শনের ক্ষেত্রে বিভিন্ন নিয়ম অনুসরণ করে।


Coercive Mode

Coercive Mode PHP-এর ডিফল্ট মোড। এই মোডে PHP আর্গুমেন্ট বা রিটার্ন টাইপে মাইল্ড কনভার্শন (টাইপ কাস্টিং) করার অনুমতি দেয়। অর্থাৎ, যদি কোনো ফাংশন বা মেথড একটি নির্দিষ্ট টাইপ চায়, তবে PHP স্বয়ংক্রিয়ভাবে অন্য টাইপ থেকে সেটিকে কাঙ্ক্ষিত টাইপে রূপান্তর করবে যদি সেটি সম্ভব হয়।

Coercive Mode উদাহরণ:

<?php
function addNumbers(int $a, int $b): int {
    return $a + $b;
}

echo addNumbers(5, "10");  // আউটপুট হবে: 15
?>

এখানে, "10" একটি স্ট্রিং হলেও, PHP এটিকে স্বয়ংক্রিয়ভাবে int-এ রূপান্তর করেছে এবং কোনও ত্রুটি ছাড়াই কাজটি সম্পন্ন হয়েছে।

Coercive Mode এর বৈশিষ্ট্য

  • অটোমেটিক টাইপ কনভার্শন: যদি টাইপ সামঞ্জস্যপূর্ণ হয়, তাহলে PHP স্বয়ংক্রিয়ভাবে টাইপ কনভার্শন করে।
  • সহজ ব্যবহারের জন্য উপযোগী: টাইপ mismatch এর ক্ষেত্রে ত্রুটি কম দেখা দেয় এবং প্রোগ্রামারদের জন্য ব্যবহার সহজ হয়।
  • ভুল ডেটা পাসিং এর ক্ষেত্রে সতর্ক নয়: টাইপ কনভার্শনের কারণে ভুল টাইপ পাস হলেও কোড চলতে থাকে, যা ভবিষ্যতে লজিক্যাল ভুল সৃষ্টি করতে পারে।

Strict Mode

Strict Mode টাইপ চেকিংকে আরও কঠোর করে, এবং এটি টাইপ কনভার্শনের অনুমতি দেয় না। অর্থাৎ, যে টাইপ ফাংশনে নির্ধারণ করা আছে, শুধুমাত্র সেই টাইপের মানই গ্রহণ করা হবে। অন্য কোনো ধরনের টাইপ দেওয়া হলে PHP একটি TypeError প্রদান করবে।

Strict Mode সক্রিয় করা:

<?php
declare(strict_types=1);

function multiply(float $a, float $b): float {
    return $a * $b;
}

echo multiply(2.5, 3);  // আউটপুট হবে: 7.5
echo multiply(2.5, "3");  // TypeError: ফ্লোট পাস করা হয়নি
?>

এখানে, declare(strict_types=1); ব্যবহারের ফলে strict mode সক্রিয় হয়েছে। দ্বিতীয় echo কলটির ক্ষেত্রে একটি TypeError প্রদর্শিত হবে, কারণ "3" একটি স্ট্রিং এবং এটি strict mode-এ কনভার্ট করা সম্ভব নয়।

Strict Mode এর বৈশিষ্ট্য

  • কঠোর টাইপ চেকিং: strict mode টাইপ কনভার্শনের অনুমতি দেয় না; কেবল নির্ধারিত টাইপের মান গ্রহণ করে।
  • TypeError প্রদান: ভুল টাইপ পাস করলে PHP সাথে সাথেই একটি ত্রুটি প্রদান করে।
  • কোডের নিরাপত্তা এবং নির্ভুলতা বৃদ্ধি: strict mode টাইপ mismatch থেকে মুক্তি দেয়, যা নিরাপত্তা এবং নির্ভুলতা নিশ্চিত করে।

Coercive এবং Strict Mode এর মূল পার্থক্য

বৈশিষ্ট্যCoercive ModeStrict Mode
টাইপ কনভার্শনস্বয়ংক্রিয়ভাবে টাইপ কনভার্শন করতে পারে, যদি সামঞ্জস্যপূর্ণ হয়কোনও কনভার্শন অনুমতি দেয় না
ডিফল্ট মোডহ্যাঁ, এটি PHP-এর ডিফল্ট মোডনা, এটি সক্রিয় করতে declare(strict_types=1); ব্যবহার করতে হয়
TypeErrorসাধারণত প্রদর্শিত হয় না, কারণ টাইপ কনভার্শন হয়TypeError প্রদান করে, যদি টাইপ mismatch হয়
ব্যবহারের উপযোগিতাব্যবহার সহজ, ছোট প্রকল্পে বা সাধারণ কাজে উপযুক্তনিরাপত্তা ও নির্ভুলতার জন্য জটিল বা বড় প্রকল্পে উপযুক্ত
কোড নিরাপত্তানিরাপত্তা কম, কারণ ভুল টাইপ পাস করা হলেও চলেনিরাপত্তা বেশি, কারণ নির্দিষ্ট টাইপ ছাড়া অন্য কিছু গ্রহণ করে না

কখন কোন মোড ব্যবহার করবেন?

  • Coercive Mode: যদি ছোট প্রকল্পে কাজ করছেন এবং টাইপ mismatch নিয়ে বিশেষ চিন্তা না থাকে, তাহলে Coercive Mode সুবিধাজনক। এটি দ্রুত উন্নয়নের জন্য সহায়ক।
  • Strict Mode: বড়, জটিল, এবং নিরাপত্তা সংক্রান্ত প্রকল্পে strict mode ব্যবহার করা উচিত। এটি টাইপ mismatch থেকে কোডকে রক্ষা করে এবং ভুল টাইপ পাস হওয়ার ঝুঁকি কমায়, যা দীর্ঘমেয়াদে বড় প্রজেক্টের ক্ষেত্রে গুরুত্বপূর্ণ।

সারসংক্ষেপ:
Coercive Mode এবং Strict Mode এর মধ্যে মূল পার্থক্য টাইপ কনভার্শনের নিয়মাবলী এবং ত্রুটি প্রদর্শন। Coercive Mode-এ PHP স্বয়ংক্রিয়ভাবে টাইপ কনভার্শন করে এবং সাধারণত কোনো TypeError ছাড়াই কোড চালায়। অন্যদিকে, Strict Mode-এ কেবল নির্ধারিত টাইপের মান গ্রহণ করা হয়, ফলে TypeError প্রদর্শিত হয় যদি ভুল টাইপ প্রদান করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...