alternative way of assigning html in php variable
ফেইসবুক অ্যাপলিকেশন ডেভলপার হিসেবে, আমদের কখনও কখনও ফেইসবুক এপিআই কল করার জন্য পিএইচপি ভ্যারিয়বলে এইচটিএমএল, সিএসএস কোডের অনেক অংশ অ্যাসাইন করতে হয়। আমি দেখেছি অনেক প্রোগ্রামার নিচের মত করে কোড করে

 <?php
      $a    =   <<<EOD
<div>         my name is $name         blah blah blah....</div>
EOD;
facebook_api_method($a); ?>

যদি এই ধরনের কোড ছোট হয় তাহলে এটা খুব বড় কোন ব্যাপার না। কিন্তু কোডের এই ধরনটি ডিবাগিং করার জন্য খুব পঠনযোগ্য নয়। কারণ বেশিরভাগ আইডিই পিএইচপি ভ্যারিয়েবলের একটি ভ্যালু হিসেবে একটি মাত্র রং দেখায়। কিন্তু চিন্তা করেন যখন অনেক এইচটিএমএল কোড এই ভাবে ব্যবহার করা হয় তখন অন্যান্য প্রোগ্রামারদের জন্য খুব সময় লাগে কোড বুঝার জন্য। কারণ আধুনিক আইডিই তে আলাদা রংয়ে এইটটিএমএল/সিএসএস ট্যাগ দেখায়, সুতরাংটি কোড খুব পঠনযোগ্য হয় এবং পরিবর্তন করা সহজ হয়।
এই সমস্যাটি সমাধান করতে নিচের কোড দেখুন

<?php
   ob_start();
   include_once "html_markup.php";
   $variable  = ob_get_contents();
   ob_clean();
   facebookl_api_callmethod($variable);
?>

html.php হল অন্য একটা ফাইল যেখানে এইচটিএমএল কোড রাখা হয়েছে

<div>
     My name is <?=$name?>     blah blah blah ......
<div>

ob_start() যখন কল করা হয় তখন এই ফাংশনটি আউটপুট বাফার অন করে দেয়। আউটপুট বাফার যতক্ষন অন অবস্থায় থাকে ততক্ষন কোন কিছুই আউটপুটে পাঠানো হয় না(শুধুমাত্র হেডার ছাড়া), এই সময় আউটপুট একটি অভ্যন্তরীণ বাফারে সংরক্ষণ হয়। ob_get_contents() আউটপুট বাফার মুছে ফেলে এবং আউটপুট বাফারের অভ্যন্তরস্থ সবকিছু স্ট্রিং হিসেবে রিটার্ন করে । সুতরাং একটি ভ্যরিয়বলে স্ট্রিং টা স্টোর করে ব্যবহার করা যায়। যদি এইভাবে কোড করা হয় তাহলে অবশ্যয় ob_clean() কল করা উচিত। এই মেথড আউটপুট বাফার মুছে ফেলে।