ভূমিকা
PHP-তে declare স্টেটমেন্টের সিনট্যাক্স অন্যান্য ফ্লো কন্ট্রোল স্ট্রাকচারের মতো যেমন while, for, foreach ইত্যাদি।
সিনট্যাক্স
declare (directive) {
statement1;
statement2;
. .
}
ব্লকের আচরণ ডিরেক্টিভের টাইপ দ্বারা নির্ধারিত হয়। declare স্টেটমেন্টে তিন ধরনের ডিরেক্টিভ দেওয়া যায় - ticks, encoding এবং strict_types ডিরেক্টিভ।
ticks ডিরেক্টিভ
একটি টিক হলো একটি スペシャル ইভেন্টের নাম যা ঘটে যখন স্ক্রিপ্টে একটি নির্দিষ্ট সংখ্যক স্টেটমেন্ট এক্সিকিউট হয়। এই স্টেটমেন্টগুলো PHP-এর ইন্টারনাল এবং মোটামুটি আপনার স্ক্রিপ্টের স্টেটমেন্টের সমান (কন্ডিশনাল এবং আর্গুমেন্ট এক্সপ্রেশন বাদে)। যেকোনো ফাংশন টিক ইভেন্টের সাথে register_tick_function দ্বারা অ্যাসোসিয়েট করা যেতে পারে। রেজিস্টার্ড ফাংশন declare ডিরেক্টিভে নির্দিষ্ট সংখ্যক টিকের পর এক্সিকিউট হবে।
নিচের উদাহরণে, myfunction() প্রতি বার declare কনস্ট্রাক্টের লুপ ৫ ইটারেশন সম্পন্ন হলে এক্সিকিউট হয়।
উদাহরণ
<?php
function myfunction(){
echo "Hello World\n";
}
register_tick_function("myfunction");
declare (ticks=5){
for ($i=1; $i<=10; $i++){
echo $i."\n";
}
}
?>
আউটপুট
উপরোক্ত স্ক্রিপ্ট কমান্ড লাইন থেকে চালালে নিচের ফলাফল তৈরি করবে:
1 2 3 4 5 Hello World 6 7 8 9 10 Hello World
PHP-তে unregister_tick_function()ও আছে একটি ফাংশনের টিক ইভেন্টের সাথে অ্যাসোসিয়েশন সরাতে।
strict_types ডিরেক্টিভ
PHP একটি দুর্বল টাইপড ল্যাঙ্গুয়েজ, এটি একটি ডেটা টাইপ উপযুক্তভাবে কনভার্ট করার চেষ্টা করে একটি নির্দিষ্ট অপারেশন পারফর্ম করার জন্য। যদি একটি ফাংশন থাকে দুটি ইন্টিজার আর্গুমেন্ট নিয়ে যা তাদের যোগফল রিটার্ন করে, এবং কল করার সময় যেকোনো আর্গুমেন্ট ফ্লোট দেওয়া হয়, PHP পার্সার স্বয়ংক্রিয়ভাবে ফ্লোটকে ইন্টিজারে কনভার্ট করবে। যদি এই কোঅার্সন ইচ্ছা না হয়, আমরা strict_types=1 declare কনস্ট্রাক্টে নির্দিষ্ট করতে পারি।
উদাহরণ
<?php
//strict_types is 0 by default
function myfunction(int $x, int $y){
return $x+$y;
}
echo "total=" . myfunction(1.99, 2.99);
?>
ফ্লোট প্যারামিটার ইন্টিজারে কোঅার্স করা হয় যোগফল করার জন্য নিচের ফলাফল দিতে:
আউটপুট
total=3
তবে, declare কনস্ট্রাক্ট strict_types=1 দিয়ে কোঅার্সন বাধা দেয়:
উদাহরণ
<?php
declare (strict_types=1);
function myfunction(int $x, int $y){
return $x+$y;
}
echo "total=" . myfunction(1.99, 2.99);
?>
আউটপুট
এটি নিচের এরর জেনারেট করবে:
Fatal error: Uncaught TypeError: Argument 1 passed to myfunction() must be of the type integer, float given, called in line 7 and defined in C:\xampp\php\testscript.php:3
এনকোডিং ডিরেক্টিভ
declare কনস্ট্রাক্টে Encoding ডিরেক্টিভ আছে যার মাধ্যমে স্ক্রিপ্টের এনকোডিং স্কিম নির্দিষ্ট করা সম্ভব।
উদাহরণ
<?php declare(encoding='ISO-8859-1'); echo "This Script uses ISO-8859-1 encoding scheme"; ?>