আমরা জানি পিএইচপি তে কোন স্ট্রিং লেখার সময় সিঙ্গেল কোট ( ‘ ) এবং ডাবল কোট ( ” ) উভয় দিয়ে Enclose(মোড়ানে 😀 ) করা যায়। উদাহরন:
<?php
echo 'Hello world'; //output: Hello world
echo "Hello world"; //output: Hello world
দুটোই সেইম আউটপুট দিচ্ছে, তাহলে পার্থক্য টা কোথায়? পার্থক্য অবশ্যই আছে এবং এটি খুবই কাজের।
ধরুন আপনার একটি ভ্যারিয়েবল যার নাম $name
এবং এই ভ্যারিয়েবলে একটি ভ্যালু ও আছে $name = 'Sagor';
, এবার আপনি চাইছেন আপনার আউটপুট হবে Hello, This is Sagor. [Sagor লেখাটি $name
ভ্যারিয়েবল থেকে নিবেন]; তাহলে কি করতে হবে? এখানে ‘Hello, This is’ লেখাটি যেহেতু স্ট্যাটিক সেইক্ষেত্রে আমাদেরকে অবশ্যই আগে সেটি সিঙ্গেল বা ডাবল কোটের ভিতরে লিখতে হবে এবং তারপর $name
ভ্যারিয়েবলটি কনক্যাট(যুক্ত) করে নিতে হবে। হুম, এটি বিভিন্ন ভাবে করতে পারেন। আমরা উদাহরন দেখলে ক্লিয়ার হবো আশাকরি।
Single Quoted
<?php
$name = 'Sagor';
echo 'Hello, This is ' . $name; //Output: Hello, This is Sagor
লক্ষ্য করুন, এখানে প্রথমের অংশটি একটি স্ট্রিং এবং পরেরটি একটি ভ্যারিয়েবল, দুটোকে ডট (.) দিয়ে সংযুক্ত করা হয়েছে। এটাকে Concat করা বলে। আচ্ছা এবার ধরা যাক আমি আউটপুট টা এমন চাচ্ছি, ‘Hello, This is Sagor, I love PHP’, এবং এখানে Sagor নাম টি $name
ভ্যারিয়েবল থেকে আসবে, তাহলে কি করতে হবে? খুব Simple.
<?php
$name = 'Sagor';
echo 'Hello, This is ' . $name . ', I love PHP'; //Output: Hello, This is Sagor, I love PHP
দুইবার ডট (.) দিয়ে Concat করা হয়েছে। নিশ্চই বুঝতে পেরেছেন। এবার ধরুন ডট দিয়ে Concat না করে সরাসরি ভ্যারিয়েবল টি কে সিঙ্গেল কোটেশনের ভিতরে লিখে ফেললাম, তাহলে কি ঘটনা ঘটবে?
<?php
$name = 'Sagor';
echo 'Hello, This is $name, I love PHP'; //Output: Hello, This is $name, I love PHP
তখন আপনার কম্পাইলার বুঝবে না যে $name
একটি ভ্যারিয়েব। এটিকে একটি স্ট্রিং হিসেবে ধরে নিবে। এবং আউটপুট আসবে Hello, This is $name, I love PHP
অর্থাৎ Single Quote এ Specify করা হলে কম্পাইলার পুরোটাকে একটি String ধরে নেয়।
Double Quoted
একইভাবে ডাবল কোটেও আমরা ডট কনক্যাট করতে পারি। এবং আউটপুট একই আসবে।
<?php
$name = 'Sagor';
echo "Hello, This is " . $name . ", I love PHP'; //Output: Hello, This is Sagor, I love PHP
কিন্তু মজার ব্যাপার হলো আমরা যাবল কোটের মধ্যে ভ্যারিয়েবল লিখলে সেটি স্ট্রিং হিসেবে কাউন্ট না করে তার মান পার্স করে নিবে। উদাহরন দেখি:
<?php
$name = 'Sagor';
echo "Hello, This is $name, I love PHP'; //Output: Hello, This is Sagor, I love PHP
খেয়াল করুন, এখানে কিন্তু আমরা ডট দিয়ে কনক্যাট করি নাই। তারপরও কাঙ্খিত আউটপুট পেয়েছি। যদিও বেস্ট প্যাক্টিস হচ্ছে এভাবে লেখা:
<?php
$name = 'Sagor';
echo "Hello, This is {$name}, I love PHP'; //Output: Hello, This is Sagor, I love PHP
এই দুটিই মুলত সিঙ্গেল কোটেড এবং ডাবল কোটেড এর মধ্যে মেজর পার্থক্য। এর বাইরে আরও কিছু পার্থক্য আছে। যেগুলো প্রোগ্রামিং করতে গেলে ধীরে ধীরে বুঝতে পারবেন, তারপরও দু’একটা দেখা যাক।
<?php
echo 'Hello, I'm Sagor'; //এটি Error দিবে, কারন সিঙ্গেল কোটের ভিতর সরাসরি সিঙ্গেল কোট লেখা যায় না
//সেক্ষেত্রে ব্যকাস্লাশ দিয়ে Escaped করে নিতে হবে
echo 'Hello, I\'m Sagor'; //Output: Hello, I'm Sagor
echo 'Hello this is \n a newline'; //Output: Hello this is \n a newline (অর্থাৎ সম্পুর্ণ স্ট্রিং হিসেবে প্রিন্ট হলো।)
//ডাবল কোটের ক্ষেত্রে
echo "Hello this is \n a newline";
//Output: Hello this is
// a newline [অর্থাৎ একটি নতুন লাইন তৈরী হয়েছে।]
সময় থাকলে PHP Escape Sequences, Escape sequences সম্পর্কে একটু স্ট্যাডি করতে পারেন।
আপনারা উদাহরনগুলি ভাল করে লক্ষ্য করুন এবং নিজে রান করুন তাহলে আশাকরি পুরোপুরি ক্লিয়ার হয়ে যাবেন ইনশাআল্লাহ।
এই ছিলো আজকের মত। অসংখ্য ধন্যবাদ। #HappyCoding