Posts

Showing posts with the label PHP

প্রি-ডিফাইনড ভেরিয়েবল

PHP তে প্রচুর প্রি-ডিফাইনড ভেরিয়েবল আছে। অর্থাৎ আগে থেকেই অনেক ভেরিয়েবল ডিক্লেয়ার করা আছে যে গুলো আমরা আমাদের কোডের যে কোন জায়গায় ব্যবহার করতে পারি। কিছু কিছু ভেরিয়েবল বর্তমান সচল সার্ভারের ভার্শন এবং কনফিগারেশন এর উপর নির্ভরশীল থাকে। আর কিছু কিছু ভেরিয়েবল অকার্যকর থাকে, যখন কমান্ড মোড দিয়ে PHP রান করা হয়। প্রি-ডিফাইনড ভেরিয়েবল লিষ্টঃ $GLOBALS $_SERVER $_GET $_POST $_FILE $_REQUEST $_SESSION $_ENV $_COOKIE $php_errormsg $HTTP_RAW_POST_DATA $http_reponse_header $argc $argv

$_SERVER

$_SERVER হচ্ছে অ্যাসোসিয়েটিভ অ্যারে টাইপ সুপার গ্লোবাল ভেরিয়েবল। এটি বর্তমান রিকুয়েষ্টকৃত পেজ ও Environment এর বিভিন্ন ইনফরমেশন(যেমনঃ  header, path, script location ) ধারন করে। $_SERVER অ্যারে সার্ভার কর্তৃক তৈরী হয়। কিন্তু এর কোন নিশ্চয়তা নেই যে সব সার্ভারই $_SERVER অ্যারের নিম্নোক্ত সকল ইনরফরমেশন স্টোর করবে। PHP কোডের মধ্যে $_SERVER["Key"] আকারে ব্যবহার করা হয়। $_SERVER এর Key গুলো কেস-সেনসিটিভ। অর্থাৎ যেভাবে নিচে অ্যাক্সেস করা হয়েছে সেভাবেই অ্যাক্সেস করতে হবে। বানান ছোট হাতের বা ছোট ও বড় হাতের পরিবর্তন করে অ্যাক্সেস করতে গেলে Error শো করবে। $_SERVER অ্যারের যে সকল Key অ্যাক্সেস করে ইনফরমেশন Collect করা হয় সেগুলো নিচে দেওয়া হলঃ "PHP_SELF" এটি সার্ভারের হোষ্টের নাম বাদে বর্তমান এক্সিকিউটেড স্ক্রিপ্টের পাথ ফাইলের নাম সহ রিটার্ন করে। যেমনঃ <?php      echo $_SERVER["PHP_SELF"]; ?> যদি উপরোক্ত কোডটি  "http://www.the-learner.com/post/index.php"  অ্যাড্রেসের হয় তবে এটি  "/post/index.php"  রিটার্ন করবে। পুরো ফাইলের...

$GLOBALS

আমরা আমাদের PHP কোডে যে সকল global ভেরিয়েবল ব্যবহার করি সেগুলোর প্রত্যেকটি এই $GLOBALS অ্যাসোসিয়েটিভ অ্যারের মধ্যে স্টোর হয়। পরবর্তীতে এই ভেরিয়েবল গুলো PHP কোডের যে কোন স্থানে ব্যবহার করা যায়। যেমনঃ 1. <?php 2.      $name = "The Learner"; 3.      function display(){ 4.           echo $GLOBALS["name"]; 5.      } 6.      display(); 7. ?> উপরোক্ত কোডে $name নামে একটি গ্লোবাল ভেরিয়েবল ডিক্লেয়ার করা হয়েছে। এটি গ্লোবাল ভেরিয়েবল এই কারণে, এটি কোন ফাংশন বা মেথডের ভেতর ডিক্লেয়ার করা হয়নি। এটি ফাংশনের বাইরে ডিক্লেয়ার করা হয়েছে। অন্যান্য অনেক ল্যাঙ্গুয়েজেই গ্লোবাল ভেরিয়েবল কোন ফাংশন বা মেথডের ভেতর শুধু ভেরিয়েবলের নাম দিয়ে কল(Call) করলেই চলে। কিন্তু PHP তে এভাবে কল করলে কাজ করে না। PHP তে যখন কোন ভেরিয়েবল গ্লোবাল হিসেবে ডিক্লেয়ার করা হয় তখন সেটি $GLOBALS অ্যাসোসিয়েটিভ অ্যারে তে স্টোর হয়। প্রত্যেকটি ভেরিয়েবলের নাম $GLOBALS অ্যারের এক একটা Key অনুযায়ী স্টোর হয়। এখানে $name হচ...

assign by value এবং assign by reference

ডিফল্ট হিসেবে PHP তে ভেরিয়েবল ভ্যালু দ্বারা অ্যাসাইন হয়। যদি কোন ভেরিয়েবলে কোন এক্সপ্রেশন অ্যাসাইন করা হয় তবে এক্সপ্রেশনের ভ্যালু উক্ত ভেরিয়েবলে কপি হয়। 1. <?php 2.      $name = "The"; 3.      $name2 = $name; 4.      $name2 = "The Learner"; 5.      echo $name . "<br>"; 6.      echo $name2; 7. ?> আউটপুটঃ The The Learner কোড বিশ্লেষনঃ ১। PHP ট্যাগ শুরু করা হয়েছে। ২। $name  নামে ভেরিয়েবল ডিক্লেয়ার করে ভ্যালু হিসেবে  "The"  অ্যাসাইন করা হয়েছে। ৩। $name2  নামে ভেরিয়েবল ডিক্লেয়ার করা হয়েছে এবং ভ্যালু হিসেবে  $name  ভেরিয়েবল অ্যাসাইন করা হয়েছে। (এরফলে $name2 ভেরিয়েবলে $name ভেরিয়েবলের ভ্যালু কপি হবে।) ৪।  $name2  ভেরিয়েবলে পুনরায় নতুন ভ্যালু "The Learner" অ্যাসাইন করা হয়েছে। (এরফলে $name2 এর পূর্বের ভ্যালু রিপ্লেস হয়ে যাবে।) ৫। $name ভেরিয়েবলের ভ্যালু প্রিন্ট করা হয়েছে। ৬। $name2 ভেরিয়েবলের ভ্যালু প্রিন্ট করা হয়েছে।...

ভেরিয়েবল ডিক্লারেশন

PHP তে ভেরিয়েবল ডিক্লেয়ার করার সময় ভেরিয়েবলের নামের আগে একটা ডলার সাইন( $ ) ব্যবহার করা হয়। <?php      $name = "The Learner"; ?> উপরোক্ত কোডে $name হচ্ছে একটি ভেরিয়েবল। আর "The Learner" হচ্ছে উক্ত ভেরিয়েবলের কন্টেন্ট বা ভ্যালু। PHP তে ভেরিয়েবল ডিক্লেয়ার করার সময় ডাটা টাইপ উল্লেখ করে দেওয়ার দরকার নেই। PHP স্বয়ংক্রিয়ভাবে ভেরিয়েবলের কন্টেক্সট(Context) অনুযায়ী ডাটা টাইপ সেট করে নেয়। ঠিক এ কারনেই PHP কে বলা হয় "Loosely Typed Language". ভেরিয়েবল ডিক্লেয়ার করার আগে টাইপ উল্লেখ না করাই হলো গুড প্র্যাকটিস। যদি উপরের কোডের কথা বিবেচনা করি তাহলে এখানে ভেরিয়েবলের কোন টাইপ উল্লেখ করে দেওয়া হয়নি। PHP অটোমেটিক্যালি ভেরিয়েবলের টাইপ সেট করে নিবে এক্ষেত্রে $name ভেরিয়েবলের টাইপ হিসেবে string সেট করবে। যেহেতু "The Learner" হচ্ছে স্ট্রিং। ভেরিয়েবল লেখার কিছু নির্দিষ্ট নিয়ম কানুন আছে। এই নিয়মের বাইরে ভেরিয়েবল ডিক্লেয়ার করলে সেটি কাজ করবে না। PHP ভেরিয়েবল লেখার নিয়মঃ ভেরিয়েবল অবশ্যই ডলার সাইন( $ ) দিয়ে শুরু করতে হবে। যেমনঃ $na...

Comments

প্রোগ্রামিং ল্যাঙ্গুয়েজে কমেন্ট কোড বুঝতে সাহায্য করে। আমরা যখন অনেকদিন পর আমাদের কোড মডিফাই করতে যাব তখন কমেন্ট আমাদের মনে করিয়ে দিবে কোন কোডের কি কাজ এবং কেন ব্যবহার করা হয়েছিল। এ জন্য প্রোগ্রামে কমেন্ট লেখা জরুরী। কমেন্ট প্রোগ্রাম রান করার সময় এক্সিকিউট হয় না। PHP তে বিভিন্ন উপায়ে কমেন্ট লেখা যায়। যেমনঃ সিঙ্গেল লাইন কমেন্ট করার জন্য লাইনের শুরুতে ডাবল ফরওয়ার্ড স্ল্যাশ( // ) অথবা হ্যাশ( # ) ব্যবহার করা হয়। <?php     // This is comment     # This is also a comment ?> একের অধিক লাইন কমেন্ট করার জন্য লাইনের শুরুতে /* এবং শেষে */ ব্যবহার করা হয়। <?php      /* This is a multiple      line comment      */ ?> PHP নেস্টেড কমেন্ট সাপোর্ট করে না। <?php      /* This is multiple      line comment. /* Nested comment */      */ ?> উপরোক্ত কোড Error শো করবে কারন এখানে নেস্টেড কমেন্ট ব্যবহার করা হয়েছে যা PHP সাপোর্ট করে না।

Instruction Speration

বেশিরভাগ প্রোগ্রামিং ল্যাঙ্গুয়েজেই একটি ইন্সট্রাকশন বা স্টেটমেন্ট শেষ করার জন্য ইন্সট্রাকশন বা স্টেটমেন্টের শেষে সেমিকোলন (;) দিতে হয়। PHP তেও ঠিক একই রকম কোন স্টেটমেন্ট শেষ করার জন্য স্টেটমেন্টের শেষে সেমিকোলন দিতে হয়। প্রতিটা লাইন সেমিকোলন দিয়ে পৃথক করাকেই Instruction Separation বলে। PHP তে Closing ট্যাগ স্বয়ংক্রিয় ভাবে PHP কোডের সর্বশেষ লাইনের শেষে একটি সেমিকোলন যোগ করে নেয়। অর্থাৎ PHP কোডের শেষ লাইনে স্টেটমেন্ট শেষ করার জন্য অতিরিক্ত সেমিকোলন দেওয়ার দরকার নেই। এটি ঐচ্ছিক। উদাহরণঃ <?php      echo "The ";      echo "Learner" ?> উপরোক্ত কোডের একদম শেষ লাইনের শেষে সেমিকোলন ব্যবহার করা হয়নি। কিন্তু এর জন্য কোন Error শো করবে না, কারন  Closing ট্যাগ( ?> ) সর্বশেষ লাইনের শেষে অটোমেটিক সেমিকোলন যোগ করে নেয়। আমাদের আর দেওয়ার দরকার নেই। কিন্তু যখন  echo "The "; এই লাইনের শেষে সেমিকোলন না দেওয়া হবে তখন Error শো করবে। কারন, এটি উপরোক্ত PHP কোডের শেষের লাইন নয়।

PHP তে HTML Escape করা

Escape মানে হল অব্যাহতি। PHP তে Escaping HTML হল, PHP ফাইল এর ভেতর কিভাবে HTML কোড লেখা হয় সেই পদ্ধতি। PHP, Opening এবং Closing ট্যাগ এর বাইরের সব কিছুই Ignore করে। অর্থাৎ Opening এবং Closing ট্যাগ এর বাইরের কোন কিছুই সে পড়ে না। উদাহরনঃ <p>This paragraph will ignored by PHP but not browser.</p> <?php echo "This text will parsed by PHP." ?> <p>This paragraph will also ignored by PHP but not browser.</p> আউটপুটঃ This paragraph will ignored by PHP but not browser. This text will parsed by PHP. This paragraph will also ignored by PHP but not browser. উপরোক্ত কোডে PHP শুধু <?php  এবং ?>  এর ভেতরের কোডটুকুই পড়বে এবং আউটপুট দিবে। আর <?php  এবং ?>  এর বাইরের কোড সাধারন অবস্থায় ব্রাউজার, HTML কোড যেভাবে Render করে সে ভাবেই Render করবে। PHP Interpreter(অনুবাদক, দোভাষী) Closing ট্যাগ ( ?> ) পেলেই আউটপুট প্রদান করা শুরু করে যতক্ষণ না পর্যন্ত পুনরায় Opening ট্যাগ ( <?php ) খোঁজে পায়। কিন্তু কোডের মধ্যে যদি কন...

অ্যানোনিমাস ফাংশন

অ্যানোনিমাস ফাংশন হচ্ছে নামবিহীন ফাংশন। অর্থাৎ যে ফাংশন এর কোন নাম নেই সেটাই হচ্ছে অ্যানোনিমাস ফাংশন। উদাহরণঃ function display($string){      echo $string(); } display(      function(){           return "I'm a anonymous function";      } ); আউটপুটঃ  I'm a anonymous function হলুদ রঙ দ্বারা আবদ্ধ ফাংশনটিই হচ্ছে অ্যানোনিমাস ফাংশন। অ্যানোনিমাস ফাংশন সাধারন ফাংশন এর মত কল করা যায় না। অ্যানোনিমাস ফাংশন কোন ভেরিয়েবল এ রেখে কল করতে হয় অথবা অন্য কোন ফাংশনের কল ব্যাক (Callback) হিসেবে ব্যবহার করা হয়।  অ্যানোনিমাস ফাংশনের ভেতরে বাহিরের কোন ভ্যারিয়েবল অ্যাক্সেস করতে হলে  use ক্লজ ব্যবহার করতে হয়। উদাহরণঃ $str = "Learner"; function display($string){      echo $string(); } display(      function()   use   ($str){           return $str;      } ); আউটপুটঃ Learner অ্যানোনিমাস ফাংশনের ভেতরে বাহিরের কোন ভেরিয়েবল অ্যা...

PHP Tags

 <?php   ?>  হলুদ রঙ করা হাবিজাবি জিনিস গুলোকেই বলা হয় PHP ট্যাগ।  <?php  এটি কে বলে Opening ট্যাগ এবং  ?>   এটিকে বলে Closing ট্যাগ। ট্যাগ লেখার সময় Opening ট্যাগ এর পরে একটি Space(ফাঁকা স্থান) দিতে হয়, অন্যথায় এটি কাজ করে না। উদাহরনঃ <?php echo "The Learner"; ?> আউটপুটঃ The Learner যখন PHP Parser(যে জিনিস খুব যত্ন সহকারে PHP ফাইলের প্রতিটা অক্ষর পুঙ্খানুপুঙ্খভাবে পড়ে এবং বিশ্লেষণ করে) কোন ফাইল Parse করে তখন এটি খোঁজ করে দেখে যে ফাইলের মধ্যে কোথায় কোথায় Opening ট্যাগ এবং Closing আছে। PHP Parser যেখানে Opening ট্যাগ পায় যেখান থেকেই পড়া শুরু করে পরবর্তী Closing ট্যাগ না পাওয়া পর্যন্ত। একটা PHP ফাইলে এক বা একাধিক Opening ট্যাগ, Closing ট্যাগ থাকতে পারে। PHP Parser যেখানে Opening ট্যাগ পায় সেখানে থেকে পড়া শুরু করে এবং যেখানে Closing ট্যাগ পায় সেখানে পড়া শেষ করে। পরবর্তীতে ঐ একই ফাইলের যেখানে আবার Opening ট্যাগ পায় সেখানে থেকে পড়া শুরু করে এবং যেখানে Clos...