পিএইচপি(PHP) একটি সার্ভার স্ক্রিপ্টিং ল্যাংগুয়েজ এবং ওয়েব পেজকে ডায়নামিক ও সুদর্শনীয় করে তোলার জন্য একটি শক্তিশালী অবকাঠামো।
পিএইচপি হল সার্বজনীন, ফ্রি এবং মাইক্রোসফট এএসপি এর প্রতিদ্বন্দ্বী।
পিএইচপি টিউটোরিয়াল এর প্রতিটি পরিচ্ছেদে আছে অসংখ্য উদাহরণ সেকশন। আপনি উদাহরণ সেকশনে মাউস নিয়ে গেলে উপরের কোণায় কোড
copy
করার একটি অপশন দেখতে পাবেন।copy
অপশনে মাউস ক্লিক করলে ক্লিপবোর্ডে কোড কপি হবে।আপনি আপনার এডিটর ওপেন করে
copy
করা কোডpaste
করতে পারবেন। এছাড়া উদাহরণ সেকশনের নিচে উদাহরণের ফলাফলও দেখানো হয়েছে।
আমাদের "ফলাফল" অংশ আপনার পিএইচপি শেখা সহজ করে দিবে। কেননা, এটির মাধ্যমে আপনি একই সাথে পিএইচপি সোর্স কোড এবং এইচটিএমএল কোডের আউটপুট দেখতে পারবেন।
kt_satt_skill_example_id=4
পিএইচপি শেখা শুরু করার পূর্বে নিচের বিষয়গুলোর উপর আপনার সাধারণ ধারনা থাকতে হবেঃ
পিএইচপি একটি চমৎকার এবং জনপ্রিয় ল্যাংগুয়েজ
- এটি এতটাই শক্তিশালী যে, সবচেয়ে বড় ব্লগিং সিস্টেম ওয়ার্ডপ্রেসেও কোর ভাষা হিসাবে ব্যবহৃত হয়েছে।
- এটি ফেসবুকের মত বিশাল সোস্যাল নেটওয়ার্ক পরিচালনার জন্যও ব্যবহৃত হয়।
- সহজ হওয়ার কারণে নতুনরা সার্ভার সাইড ল্যাংগুয়েজ হিসাবে এটিই প্রথম শিখে!
পিএইচপির আউটপুট শুধুমাত্র এইচটিএমএলে সীমাবদ্ধ নাই। পিএইচপির মাধ্যমে আপনি ছবি, পিডিএফ ফাইল এবং এমনকি ফ্ল্যাশ মুভিও আউটপুট হিসাবে নিতে পারেন। এছাড়া আপনি যেকোনো ধরণের টেক্সটকেও আউটপুট হিসাবে নিতে পারেন। যেমন; HTML এবং XML।
হোম-HOME ইনস্টল-Install গঠনপ্রনালী-Syntax চলক-Variable পিএইচপি Echo / Print তথ্যের ধরণ-Data Types কনস্ট্যান্ট-Constant অপারেটর-Operator ফাংশন-Function সুপারগ্লোভাল-Superglobal
if স্টেটমেন্ট if...Else স্টেটমেন্ট Switch স্টেটমেন্ট While লুপ DO...While লুপ For লুপ
এ্যারে-Array এ্যারে সর্টিং -Array Sorting মাল্টি এ্যারে-Multi Array স্ট্রিং-String
তারিখ এবং সময় পিএইচপি include ফাইল হ্যান্ডলিং-File Handling ফাইল খোলা/পড়া ফাইল তৈরি/লিখা ফাইল আপলোড ফাইল ডাউনলোড কুকি-Cookie সেশন-Session ফিল্টার-Filter এডভান্স ফিল্টার-Advance Filter এঁরর হ্যান্ডলিং-Error Handling এক্সেপশন হ্যান্ডেলিং-Exception Handling
ফরম হ্যান্ডলিং ফরম ভ্যালিডেশন আবশ্যক ফরম ফিল্ড ফরম URL/E-mail সম্পূর্ণ ফরম
MySQL ডেটাবেজ MySQL ডেটাবেজ সংযোগ MySQL ডেটাবেজ তৈরী MySQL টেবিল তৈরী MySQL তথ্য ইনসার্ট MySQL শেষ আইডি পান MySQL একাধিক তথ্য ইনসার্ট MySQL প্রিপেয়ার্ড স্টেটমেন্ট MySQL তথ্য সিলেক্ট MySQL তথ্য ডিলিট MySQL তথ্য আপডেট MySQL সীমিত তথ্য সিলেক্ট
PHP XML Parser PHP SimpleXML Parser PHP XML Parser PHP SimpleXML - Get PHP XML Expat PHP XML Dom
পিএইচপি AJAX পরিচিতি AJAX পিএইচপি AJAX ডেটাবেজ AJAX এক্সএমএল AJAX সারাসরি সার্চ AJAX RSS রির্ডার AJAX Poll
OOP পরিচিতি OOP class তৈরী OOP objects তৈরী OOP $this কিওয়ার্ড OOP মেথড এবং প্রোপার্টি চেইনিং OOP অ্যাক্সেস মোডিফায়ার OOP ম্যাজিক মেথড এবং কন্সটেন্ট OOP ইনহেরিটেন্স OOP Abstract class এবং method OOP ইন্টারফেস OOP পলিমরফিজম OOP টাইপ হিন্টিং() OOP টাইপ হিন্টিনং ইন্টারফেস OOP স্ট্যাটিক মেথোড এবং প্রোপার্টি
নিম্নোক্ত উপায়ে পিএইচপি ব্যবহার শুরু করতে পারেন।
আপনার সার্ভারে যদি ইতিমধ্যেই পিএইচপি একটিভ করা থাকে তাহলে পিএইচপি সেটআপের জন্য আপনাকে আর কিছুই করতে হবে না।
শুধু .php এক্সটেনশন দিয়ে কিছু ফাইল তৈরি করে আপনার ওয়েব ডিরেক্টরিতে রাখুন এবং ব্রাউজার থেকে সেগুলো রান করান তাহলে সার্ভার অটোমেটিকালি সেগুলোকে আপনার জন্য পার্স(parse) করবে।
আপনাকে কষ্ট করে কোন কিছুই কম্পাইল করতে হবে না অথবা অতিরিক্ত টুলস ইনস্টল করতে হবে না।
পিএইচপি ফ্রি হওয়ায় অধিকাংশ ওয়েব হোস্টেই পিএইচপি সাপোর্ট করে।
যাইহোক, আপনার সার্ভার যদি পিএইচপি সাপোর্ট না করে, তাহলে আপনাকে নিম্নোক্ত বিষয়গুলো করতে হবেঃ
পিএইচপি ইনস্টল সম্মন্ধে আরও জানতে পিএইচপির অফিসিয়াল সাইট PHP.net ভিজিট করুনঃ
http://php.net/manual/en/install.php
পিএইচপি ইনস্টল করার জন্য আমরা আপনাকে AMP (Apache, MySQL, PHP) সফটওয়্যার স্ট্যাক ইনস্টল করার পরামর্শ দিচ্ছি। কেননা, এটি সকল অপারেটিং সিস্টেমের জন্যই সচারচর পাওয়া যায়। আপনি বাজারে অনেক ধরণের AMP দেখতে পাবেন যেগুলো নিম্নে তুলে ধরা হলোঃ
আপনি যদি Windows ব্যবহার করেন এবং XAMPP এর অন্যান্য বৈশিষ্ট্যসহ Perl ব্যবহার করতে না চান তাহলে আপনি WAMP ব্যবহার করতে পারেন। একইভাবে আপনি Linux এর জন্য LAMP এবং MacOS এর জন্য MAMP ব্যবহার করেতে পারেন।
পিএইচপি স্ক্রিপ্ট বা কোড সার্ভারে এক্সিকিউট হয় এবং ব্রাউজারে সাধারণ এইচটিএমএল ফরম্যাট এ ফেরত পাঠায়।
পিএইচপি স্ক্রিপ্ট একটি ডকুমেন্টের যেকোনো জায়গায় রাখা যায়।
পিএইচপি স্ক্রিপ্ট দিয়ে শুরু হয় এবং
?>
দিয়ে শেষ হয়ঃ
পিএইচপি এর ডিফল্ট ফাইল এক্সটেনশন হচ্ছে ".php"
kt_satt_skill_example_id=9
পিএইচপি ফাইলের মধ্যে সাধারণত এইচটিএমএল ট্যাগ এবং কিছু পিএইচপি স্ক্রিপ্টিং কোড ব্যবহার করা হয়।
নিচের উদাহরণে আমরা একটি সাধারণ পিএইচপি ফাইলের উদাহরণ দেখবো, যেখানে ওয়েব পেজের মধ্যে "হ্যালো স্যাট " আউটপুট নেওয়ার জন্য পিএইচপি এর একটি বিল্ট-ইন ফাংশন "echo"
ব্যবহার করা হয়েছে।
kt_satt_skill_example_id=5
বিঃদ্রঃ পিএইচপি স্টেটমেন্ট সেমিকোলন (;) দিয়ে শেষ হয়।
অর্থাৎ পিএইচপিতে ছোট হাতের বর্ণ এবং বড় হাতের বর্ণকে আলাদাভাবে বিবেচনা করা হয়।
পিএইচপি কেস-সেনসিটিভ হওয়া সত্ত্বেও সব ধরনের কিওয়ার্ড (যেমন- if
, else
, for
, echo
ইত্যাদি), ক্লাস, ফাংশন এবং ইউজার ডিফাইন্ড ফাংশন কেস-সেনসিটিভ নয়।
নিচের উদাহরণে তিনটি echo স্টেটমেন্টই বৈধ এবং সমানঃ
kt_satt_skill_example_id=6
যাইহোক, সবধরনের চলক(variable) কিন্তু কেস সেনসিটিভ।
নিচের উদাহরণে শুধুমাত্র $name ভ্যারিয়েবলের ভ্যালু প্রদর্শিত হবে। কারণ $name, $NAME এবং $Name তিনটি ভিন্ন ভিন্ন ভ্যারিয়েবল।
যেহেতু $NAME এবং $Name ভ্যারিয়েবল ডিফাইন করা হয়নি, তাই যখন আমরা এগুলোর আউটপুট নিতে চাইবো তখন error দেখাবে।
kt_satt_skill_example_id=7
পিএইচপি কোড ব্যাখ্যা করার জন্য এবং অধিক পাঠযোগ্য করে তোলার জন্য কমেন্ট(Comment) ব্যবহার করা হয়।
এক্সিকিউশন থেকে বিরত রাখার জন্যও পিএইচপি কোডে কমেন্ট ব্যবহার করা হয়। বিশেষ করে বিকল্প কোন কোড(code) টেস্ট করার সময় এর ব্যবহার বেশ লক্ষ্যনীয়।
কমেন্ট এর ব্যবহারঃ
পিএইচপি কয়েক ধরনের কমেন্ট সমর্থন করেঃ
kt_satt_skill_example_id=8
ভ্যারিয়েবল হলো তথ্য জমা রাখার পাত্র(container)।
আপনি যদি পিএইচপিতে তথ্য নিয়ে কাজ করতে চান তাহলে তথ্য/তথ্যসমূহকে অবশ্যই প্রথমে ভ্যারিয়েবলের মধ্যে জমা রাখতে হবে।
পিএইচপিতে ভ্যারিয়েবল লেখার জন্য প্রথমে $ চিহ্ন এবং এর সাথেই ডান পাশে ভ্যারিয়েবল এর নাম লিখতে হয়।
kt_satt_skill_example_id=11
উপররের উদাহরণটি সম্পাদিত হওয়ার পরে $academyName এবং $postCode ভ্যারিয়েবল এর মধ্যে যথাক্রমে স্যাট একাডেমী এবং ৬২১১ জমা হয়।
- পরামর্শঃ ভ্যারিয়েবল এর মধ্যে টেক্সট ভ্যালু জমা রাখার জন্য কোটেশন মার্ক(" ") ব্যবহার করুন।
- বিঃদ্রঃ অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ যেমন- সি, সি++, জাভা ইত্যাদির ন্যায় পিএইচপিতে ভ্যারিয়েবল ঘোষণা করার জন্য অতিরিক্ত কোনো কমান্ড ব্যবহার করতে হয় না। পিএইচপি ভ্যারিয়েবলে যখনই কোনো ভ্যালু এসাইন করে দেন তখনি এটি তৈরি হয়ে যায়।
শুধুমাত্র এটুকু বুঝলেই হবে যে, ভ্যারিয়েবল হলো তথ্য জমা রাখার পাত্র।
ভ্যারিয়েবলের নাম সংক্ষিপ্ত(যেমন- x এবং y) অথবা বর্ননামূলক(যেমন- age, color, first_name ইত্যাদি) হতে পারে।
পিএইচপি ভ্যারিয়েবল ডিক্লেয়ারেশন এর নিয়মঃ
সবসময়ই মাথায় রাখবেন যে, পিএইচপি ভ্যারিয়েবল হচ্ছে কেস সেনসিটিভ!
ব্রাউজার/কনসোলে পিএইচপি ভ্যারিয়েবলের আউটপুট নেওয়ার জন্য প্রায়ই echo স্টেটমেন্ট ব্যবহার করা হয়।
ভ্যারিয়েবলের আউটপুট কিভাবে নিতে হয় নিচের উদাহরণে দেখানো হলোঃ
kt_satt_skill_example_id=13
নিচের উদাহরণের মাধ্যমে ২টি ভ্যারিয়েবলের যোগফল নির্ণয় করে দেখানো হলোঃ
kt_satt_skill_example_id=14
বিঃদ্রঃ echo স্টেটমেন্ট সম্মন্ধে পরবর্তী অধ্যায়ে আরও আলোচনা করা হয়েছে।
উপরের উদাহরণ সমূহে লক্ষ্য করলে দেখবেন যে, সেখানে ভ্যারিয়েবলের কোনো ডেটা টাইপ নাই।
ভ্যালুর উপর ভিত্তিকরে পিএইচপি ভ্যারিয়েবল স্বয়ংক্রিয়ভাবেই সঠিক ডেটা টাইপে রূপান্তরিত(convert) হয়।
কিন্তু অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ যেমন- সি, সি++, জাভা ইত্যাদির ক্ষেত্রে ভ্যারিয়েবলের নামের পূর্বে অবশ্যই ডেটা টাইপ নির্ধারণ করে দিতে হয়।
পিএইচপিতে স্ক্রিপ্টের যেকোনো জায়গায় ভ্যারিয়েবল ঘোষণা(Declare) করা যায়।
ভ্যারিয়েবলের স্কোপ হলো স্ক্রিপ্টের অংশ, যেখানে ভ্যারিয়েবল কে রেফার করা হয়ঃ
ফাংশনের ভেতরে ভ্যারিয়েবল ঘোষণা করলে তাদের স্কোপ LOCAL থাকে এবং এটি শুধুমাত্র ফাংশনের ভেতর থেকেই এক্সেস এবং ব্যবহার করা যায়ঃ
kt_satt_skill_example_id=15
ফাংশনের বাহিরে ভ্যারিয়েবল ঘোষণা করলে তাদের স্কোপ GLOBAL থাকে এবং এটি শুধুমাত্র ফাংশনের বাহির থেকেই এক্সেস এবং ব্যবহার করা যায়ঃ
kt_satt_skill_example_id=16
আপনি ইচ্ছা করলে একই ভ্যারিয়েবলের নাম ভিন্ন ভিন্ন ফাংশনে ব্যবহার করতে পারবেন। কারণ, ফাংশনের মধ্যে ঘোষিত ভ্যারিয়েবলের স্কোপ লোকাল হওয়ায় শুধুমাত্র সংশ্লিষ্ট ফাংশনই ঐ ভ্যারিয়েবল কে মনে রাখে।
অর্থাৎ ফাংশন এক্সিকিউশন হলেই এদের লাইফ টাইম শেষ হয়ে যায়।
গ্লোবাল ভ্যারিয়েবলকে ফাংশনের মধ্য থেকে এক্সেস করতে হলে global কিওয়ার্ড ব্যবহার করতে হয়।
এটি করার জন্য নিচের উদাহরণের মত ফাংশনের মধ্যে ভ্যারিয়েবলের নামের পূর্বে global কিওয়ার্ড ব্যবহার করুনঃ
kt_satt_skill_example_id=17
পিএইচপি সকল গ্লোবাল ভ্যারিয়েবলকে $GLOBALS[index] নামের একটি এসোসিয়েটিভ অ্যারে এর মধ্যে জমা রাখে। এখানে index হচ্ছে ভ্যারিয়েবলের নাম। এছাড়া এই অ্যারেকে ফাংশনের মধ্য থেকে এক্সেস করা যায় এবং এটি ব্যবহার করে গ্লোবাল ভ্যারিয়েবলকে সরাসরি আপডেটও করা যায়।
উপরের উদাহরণটি নিচের মত করেও লিখা যায়।
kt_satt_skill_example_id=18
সাধারণত কোনো ফাংশন সম্পন্ন হওয়ার সাথে সাথেই ফাংশনের মধ্যে ব্যবহৃত সমস্ত ভ্যারিয়েবল মুছে যায়।
আপনি যদি এমনটা চান যে, ফাংশন সম্পন্ন হওয়ার পরেও ভ্যারিয়েবল মুছে যাবে না, এক্ষেত্রে ভ্যারিয়েবল ঘোষণা করার সময় ভ্যারিয়েবলের নামের পূর্বে static কিওয়ার্ড ব্যবহার করুনঃ
kt_satt_skill_example_id=19
এখন ফাংশনকে যতবার কল করবেন, ভ্যারিয়েবলের ভ্যালুও ততবার পরিবর্তন হবে এবং শেষ বার কল করলে যে ভ্যালু পাওয়া যাবে সেটাই হবে ভ্যারিয়েবলের ভ্যালু।
নোটঃ উপরের উদাহরণে ব্যবহৃত ভ্যারিয়েবল $number এর স্কোপ ফাংশনের মধ্যে এখনো লোকাল।
আউটপুট নেওয়ার জন্য পিএইচপিতে দুটি মৌলিক পদ্ধতি রয়েছেঃ
পিএইচপির এই টিউটোরিয়ালে আধিকাংশ উদাহরণেই আমরা echo(print) ব্যবহার করেছি। এই দুটি আউটপুট স্টেটমেন্ট সম্মন্ধে নিচে হালকা আলোচনা করা হলো।
echo
এবং print
স্টেটমেন্ট প্রায় একই রকম। কারণ দুটোকেই ব্যবহার করা হয় ব্রাউজার/কনসোলে আউটপুট নেওয়ার জন্য।
স্টেটমেন্ট দুটির কাজ একই হওয়া সত্ত্বেও সামান্য কিছু পার্থক্য বিদ্যমানঃ echo
এর কোনো রিটার্ন ভ্যালু নাই। কিন্তু print
এর রিটার্ন ভ্যালু হলো 1। সুতরাং print
কে এক্সপ্রেশনেও ব্যবহার করা যায়।
echo
একের অধিক প্যারামিটার(parameter) গ্রহণ করতে পারে কিন্তু print
একটি মাত্র আর্গুমেন্ট গ্রহণ করতে পারে।
echo
তুলনামূলকভাবে print
এর চেয়ে দ্রুত কাজ করে।
echo
স্টেটমেন্টকে বন্ধনীসহ অথবা বন্ধনী ছাড়াও ব্যবহার করা যায়। যেমন- echo অথবা echo()
আমরা নিচের উদাহরণের সাহায্যে দেখবো কিভাবে echo
স্টেটমেন্ট এর মাধ্যমে টেক্সট(text) আউটপুট নেওয়া যায়। আপনি লক্ষ্য করলে দেখবেন যে, টেক্সট এর মধ্যে এইচটিএমএল মার্কআপও রয়েছেঃ
kt_satt_skill_example_id=22
নিচের উদাহরণের সাহায্যে দেখবো কিভাবে টেক্সট(text) এবং ভ্যারিয়েবল আউটপুট নেওয়া যায়ঃ
kt_satt_skill_example_id=23
print
স্টেটমেন্টকে বন্ধনীসহ অথবা বন্ধনী ছাড়াও ব্যবহার করা যায়। যেমন- print অথবা print()
আমরা নিচের উদাহরণের সাহায্যে দেখবো কিভাবে print
স্টেটমেন্ট এর মাধ্যমে টেক্সট(text) আউটপুট নেওয়া যায়। আপনি লক্ষ্য করলে দেখবেন টেক্সট এর মধ্যে এইচটিএমএল মার্কআপও রয়েছেঃ
kt_satt_skill_example_id=24
নিচের উদাহরণের সাহায্যে দেখবো কিভাবে print
স্টেটমেন্ট এর মাধ্যমে টেক্সট(text) এবং ভ্যারিয়েবল আউটপুট নেওয়া যায়ঃ
kt_satt_skill_example_id=25
ভ্যারিয়েবলের মধ্যে বিভিন্ন টাইপের ডেটা রাখা যায় এবং ভিন্ন ভিন্ন ডেটার মাধ্যমে ভিন্ন ভিন্ন কাজ করা যায়।
পিএইচপিতে নিম্নোক্ত ডেটা টাইপ সাপোর্ট করেঃ
Boolean মাত্র দুইটা ভ্যালু সরবরাহ করে। যেমন- true অথবা false।
শর্ত (condition) যাচাই করার জন্য প্রায়ই বুলিয়ান ডেটা ব্যবহার করা হয়। শর্ত যাচাই সম্বন্ধে পরবর্তী অধ্যায়ে আলোচনা করা হয়েছে।
integer হচ্ছে -2,147,483,648 এবং 2,147,483,647 এর মধ্যে যেকোনো পূর্ণসংখ্যা।
integer এর নিয়মঃ
নিচের উদাহরণে $year হচ্ছে integer এবং এর ডেটা টাইপ ও ভ্যালু জানার জন্য পিএইচপি var_dump
()
ফাংশন ব্যবহার করা হয়েছেঃ
kt_satt_skill_example_id=26
স্ট্রিং হলো অক্ষরের ক্রম। যেমন- "হ্যালো বাংলাদেশ!"।
কোটেশন মার্কের মধ্যে ব্যবহৃত যেকোনো টেক্সটই স্ট্রিং। স্ট্রিংকে সিঙ্গেল বা ডাবল কোটেশনের মধ্যে রাখা যায়ঃ
kt_satt_skill_example_id=27
Float হলো দশমিক সংখ্যা। একে দশমিক বা এক্সপনেনশিয়াল(ex) ফর্মে লেখা যায়।
নিচের উদাহরণে $number হলো float এবং এর ডেটা টাইপ ও ভ্যালু জানার জন্য পিএইচপি var_dump
()
ফাংশন ব্যবহার করা হয়েছেঃ
kt_satt_skill_example_id=28
Array এমন একটি ভ্যারিয়েবল যার মাধ্যমে একই সঙ্গে একের অধিক ভ্যালু জমা রাখা যায়।
নিচের উদাহরণে $satt হলো অ্যারে ভ্যারিয়েবল এবং এর ডেটা টাইপ ও ভ্যালু জানার জন্য পিএইচপি var_dump
()
ফাংশন ব্যবহার করা হয়েছেঃ
kt_satt_skill_example_id=29
পরবর্তী অধ্যায়ে Array সম্মন্ধে বিস্তারিত আলোচনা করা হয়েছে।
Object এমন এক ডেটা টাইপ যার মধ্যে শুধুমাত্র ডেটাই থাকে না, বরং ঐ ডেটাকে কিভাবে প্রসেস করতে হবে সে তথ্যও থাকে।
Object ডেটা টাইপ অন্য সব ডেটা টাইপ থেকে ভিন্ন। পিএইচপিতে Object ঘোষণা করতে অবশ্যই new
কিওয়ার্ড ব্যবহার করতে হবে।
Object ডেটার জন্য প্রথমেই আমাদেরকে ক্লাস ঘোষণা করতে হবে। ক্লাস ঘোষণা করার জন্য class
কি-ওয়ার্ড ব্যবহার করতে হয়। ক্লাস হচ্ছে এক ধরনের টেমপ্লেট বা গঠনপ্রণালী যার মধ্যে অবজেক্ট এর প্রোপার্টি এবং মেথড থাকতে পারেঃ
kt_satt_skill_example_id=31
পরবর্তী অধ্যায়ে Object সম্মন্ধে বিস্তারিত আলোচনা করা হয়েছে।
Null হলো বিশেষ ধরনের ডেটা টাইপ, যার শুধুমাত্র একটি ভ্যালু থাকে। যেমন- NULL।
যে সকল ভ্যারিয়েবলে কোনো ভ্যালু এসাইন করা হয় না তাদের ডেটা টাইপ NULL।
বিঃদ্রঃ যদি কোনো ভ্যারিয়েবলকে ভ্যালু ছাড়াই ঘোষণা করা হয় তাহলে স্বয়ংক্রিয়ভাবে এর ভ্যালু NULL বা ফাঁকা হয়।
ভ্যারিয়েবলের ভ্যালু NULL এসাইন করে ফাঁকা রাখা যায়।
kt_satt_skill_example_id=32
পিএইচপি বিশেষ ধরণের ডেটা টাইপ Resource প্রকৃত ডেটা টাইপ নয়। এটি প্রকৃতপক্ষে ফাংশন বা বাহ্যিক পিএইচপি রিসোর্স এর রেফারেন্স জমা রাখে।
রিসোর্স ডেটা টাইপ এর সাধারণ উদাহরণ হলো ডেটাবেজ কল করা।
পিএইচপি কনস্ট্যান্ট ভ্যারিয়েবলের মতই। শুধুমাত্র পার্থক্য এই যে, কনস্ট্যান্টকে একবার ডিফাইন্ড(defined) করলে আর পরিবর্তন বা আনডিফাইন্ড করা যায় না।
কনস্ট্যান্ট হলো সাধারণ ভ্যালুর জন্য আইডেন্টিফায়ার বা নাম। স্ক্রিপ্ট এক্সিকিউশন এর সময় কনস্ট্যান্ট ভ্যালু পরিবর্তিন করা যায় না।
একটি বৈধ কনস্ট্যান্ট এর নাম বর্ণ(letter) বা আন্ডারস্কোর দ্বারা শুরু হয়। কনস্ট্যান্ট এর নামের পূর্বে ডলার($) সাইন ব্যবহৃত হয় না।
বিঃদ্রঃ সমগ্র স্ক্রিপ্ট জুড়েই কনস্ট্যান্ট এর স্কোপ স্বয়ংক্রিয়ভাবে গ্লোবাল হয়।
পিএইচপি কনস্ট্যান্ট দুইভাবে ডিফাইন করা যায়। যেমন-
define
()
ফাংশন ব্যবহার করে।const
কীওয়ার্ড ব্যবহার করে।define
()
ফাংশন ব্যবহার করে কনস্ট্যান্ট তৈরিkt_satt_skill_example_id=36
প্যারামিটার এর ব্যাখ্যাঃ
নিচের উদাহরণে একটি case-sensitive কনস্ট্যান্ট এর নাম তৈরি করে দেখানো হলোঃ
kt_satt_skill_example_id=37
নিচের উদাহরণে একটি case-insensitive কনস্ট্যান্ট এর নাম তৈরি করে দেখানো হলোঃ
kt_satt_skill_example_id=39
const
কীওয়ার্ড ব্যবহার করে কনস্ট্যান্ট তৈরিconst
কীওয়ার্ড কম্পাইল এর সময় কনস্ট্যান্ট তৈরি করে। এটি ফাংশন নয়, বরং এটি language construct।
এটি define
()
এর তুলনায় দ্রুত কাজ করে।
এটি সব সময় কেস-সেনসিটিভ
নিচের উদাহরণে const
কীওয়ার্ড ব্যবহার করে কনস্ট্যান্ট তৈরি করে দেখানো হলোঃ
kt_satt_skill_example_id=40
কনস্ট্যান্ট এর স্কোপ স্বয়ংক্রিয়ভাবেই গ্লোবাল এবং সমগ্র স্ক্রিপ্ট জুড়েই এটিকে ব্যবহার করা যায়।
নিচের উদাহরণে কনস্ট্যান্টকে ফাংশনের বাহিরে ডিফাইন করা সত্ত্বেও ফাংশনের মধ্য থেকে ব্যবহার করা হয়েছেঃ
kt_satt_skill_example_id=42
ভ্যারিয়েবল এবং ভ্যালুর মধ্যে অপারেশন করার জন্য অপারেটর ব্যবহৃত হয়।
অপারেটর এক ধরণের প্রতীক যা ভ্যালু অথবা ভ্যারিয়েবলকে অপারেট করতে পারে। উদাহরণস্বরূপঃ + একটি অপারেটর যা যোগ করতে ব্যবহৃত হয়।
পিএইচপি অপারেটরগুলোকে নিম্নোক্ত ভাগে ভাগ করেছেঃ
গাণিতিক যোগ-বিয়োগ, গুণ-ভাগ ইত্যাদির জন্য পিএইচপি Arithmetic অপারেটর ব্যবহার করা হয়।
অপারেটর | অর্থ | উদাহরণ ($a=20, $b=9) | বর্ণনা |
---|---|---|---|
+ | যোগ | $a + $b = 29 | $a এবং $b এর যোগফল রিটার্ন করে। |
- | বিয়োগ | $a - $b = 11 | $a এবং $b এর বিয়োগফল রিটার্ন করে। |
* | গুন | $a * $b = 180 | $a এবং $b এর গুনফল রিটার্ন করে। |
/ | ভাগ | $a/$b = 2.222... | $a এবং $b এর ভাগফল রিটার্ন করে। |
% | ভাগশেষ | $a % $b = 2 | $a এবং $b এর ভাগশেষ রিটার্ন করে। |
** | সূচক | $a ** $b = | b এর মান a সূচক হিসাবে ফলাফল রিটার্ন করা। |
kt_satt_skill_example_id=46
পিএইচপি এসাইনমেন্ট(=) অপারেটর ব্যবহার করে ভ্যারিয়েবল এর মধ্যে ভ্যালু এসাইন করা হয়।
অর্থাৎ "=" চিহ্ন পিএইচপির মৌলিক এসাইনমেন্ট অপারেটর। এর অর্থ এই যে, ডান পাশের ভ্যালু বাম পাশের অপারেন্ড/ভ্যারিয়েবলে এ জমা হয়।
অপারেটর | উদাহরন(int a=11, b=5) | একই রকম | ফলাফল |
---|---|---|---|
= | a = b | a = b | 5 |
+= | a += b | a = a+b | 16 |
-= | a -= b | a = a-b | 6 |
*= | a *= b | a = a*b | 55 |
/= | a /= b | a = a/b | 2 |
%= | a %= b | a = a%b | 1 |
kt_satt_skill_example_id=48
পিএইচপি comparison অপারেটর এর মাধ্যমে নাম্বার অথবা স্ট্রিং এর মধ্যে তুলনা করা হয়ঃ
অপারেটর | নাম | বর্ণনা |
---|---|---|
== | Equal | $a যদি $b এর সমান হয়, তাহলে true রিটার্ন করবে। |
=== | Identical | $a যদি $b এর সমান ও একই টাইপের হয়, তাহলে true রিটার্ন করবে। |
!= | Not equal | $a যদি $b এর সমান না হয়, তাহলে true রিটার্ন করবে। |
<> | Not equal | $a যদি $b এর সমান না হয়, তাহলে true রিটার্ন করবে। |
!== | Not identical | $a যদি $b এর সমান অথবা একই টাইপের না হয়, তাহলে true রিটার্ন করবে। |
> | Greater than | $a যদি $b এর চেয়ে বড় হয়, তাহলে true রিটার্ন করবে। |
< | Less than | $a যদি $b এর চেয়ে ছোট হয়, তাহলে true রিটার্ন করবে। |
>= | Greater than or equal | $a যদি $b এর চেয়ে বড় অথবা সমান হয়, তাহলে true রিটার্ন করবে। |
<= | Less than or equal | $a যদি $b এর চেয়ে ছোট অথবা সমান হয়, তাহলে true রিটার্ন করবে। |
kt_satt_skill_example_id=50
পিএইচপি increment/decrement অপারেটর এর মধ্যমে কোনো ভ্যারিয়েবলের ভ্যালু বৃদ্ধি বা হ্রাস (Increment or Decrement) করা যায়।
অপারেটর | নাম | বর্ণনা |
---|---|---|
++$a | Pre-increment | আগে $a এর ভ্যালু এক বৃদ্ধি পায় তারপরে $a কে রিটার্ন করে। |
--$a | Pre-decrement | আগে $a এর ভ্যালু এক হ্রাস পায় তারপরে $a কে রিটার্ন করে। |
$a++ | Post-increment | আগে $a কে রিটার্ন করে তারপরে $a এর ভ্যালু এক বৃদ্ধি পায়। |
$a-- | Post-decrement | আগে $a কে রিটার্ন করে তারপরে $a এর ভ্যালু এক হ্রাস পায়। |
kt_satt_skill_example_id=51
কন্ডিশনাল স্টেটমেন্ট গুলোর মধ্যে কম্বিনেশনের জন্য পিএইচপি logical অপারেটর ব্যবহার করা হয়।
অপারেটর | নাম | বর্ণনা |
---|---|---|
and | And | $a এবং $b উভয়েই true হলে true রিটার্ন করে। |
or | Or | $a এবং $b এর মধ্যে যেকোনো একটি true হলে true রিটার্ন করে। |
xor | xor | $a এবং $b এর মধ্যে যেকোনো একটি true কিন্তু উভয়ে true না হলে true রিটার্ন করে। |
&& | And | $a এবং $b এর উভয়ই true হলে true রিটার্ন করে। |
|| | Or | $a এবং $b এর যেকোনো একটি true হলে true রিটার্ন করে। |
! | Not | $a true না হলে true রিটার্ন করে। |
kt_satt_skill_example_id=52
পিএইচপিতে ২ টি অপারেটর আছে যেগুলো শুধুমাত্র String অপারেশনের জন্য ডিজাইন করা হয়েছে।
অপারেটর | নাম | বর্ণনা |
---|---|---|
. | Concatenation | $string1 এবং $string2 কে একত্রিত করে অর্থাৎ পাশাপাশি বসায়। |
.= | Concatenation assignment | $string এ নতুন ভ্যালু যোগ করে $string -কে বৃদ্ধি করে |
kt_satt_skill_example_id=53
দুই বা ততোধিক array-এর মধ্যে তুলনা করার জন্য পিএইচপি array অপারেটর ব্যবহার করা হয়।
অপারেটর | নাম | বর্ণনা |
---|---|---|
+ | Union | $a এবং $b এর সংযোগ ঘটায়। |
== | Equality | $a এবং $b এর কী/ভ্যালু(key/value) একই হলে true রিটার্ন করে। |
=== | Identity | $a এবং $b এর কী/ভ্যালু(key/value) এবং অর্ডার ও টাইপ একই হলে true রিটার্ন করে। |
!= | Inequality | $a এর কী/ভ্যালু(key/value) যদি $b এর সমান না হয়, তাহলে true রিটার্ন করে। |
<> | Inequality | $a এর কী/ভ্যালু(key/value) যদি $b এর সমান না হয়, তাহলে true রিটার্ন করে। |
!== | Non-identity | $a এর টাইপ যদি $b এর টাইপের মত না হয়, তাহলে true রিটার্ন করে। |
kt_satt_skill_example_id=54
পিএইচপি শক্তিশালি ল্যাঙ্গুয়েজ হওয়ার মূল কারণই হচ্ছে এর ফাংশন। কেননা পিএইচপিতে ১০০০ এর বেশি নিজস্ব(built-in) ফাংশন রয়েছে এবং এর সংখ্যা দিন দিন বেড়েই চলেছে।
পিএইচপির নিজস্ব ফাংশন থাকা সত্ত্বেও আমরা আমাদের প্রয়োজন অনুযায়ী ফাংশন তৈরি করতে পারি।
ফাংশন হচ্ছে একগুচ্ছ স্টেটমেন্ট যাকে আমরা প্রোগ্রামের মধ্যে বার বার ব্যবহার করতে পারি।
ফাংশন নিজে নিজে সম্পাদিত(execute) হয় না।
ফাংশনকে সম্পাদন(execute) করতে হলে অবশ্যই কল(call) করতে হবে।
পিএইচপি ফাংশন তৈরি করতে প্রথমে "function" কী-ওয়ার্ড লিখতে হয় এর পরে ফাংশন এর নাম এর পরে () এবং {}
kt_satt_skill_example_id=56
নোটঃ letter অথবা underscore দিয়ে ফাংশনের নাম শুরু হয়
টিপসঃ আপনার কাজের সাথে সঙ্গতি রেখে ফাংশনের নাম দিন!
পিএইচপিতে ফাংশনের নাম case-sensitive নয়।
নিচের উদাহরণে আমরা "welcomeMsg()" নামে একটি ফাংশন তৈরি করবো। ওপেনিং দ্বিতীয় বন্ধনীর(curly brace){ মাধ্যমে ফাংশনের কোড শুরু হয় এবং ক্লোজিং দ্বিতীয় বন্ধনীর(curly brace) } মাধ্যমে ফাংশন শেষ হয়। ফাংশনকে কল করার জন্য শুধু ফাংশনের নাম লিখতে হয়ঃ
kt_satt_skill_example_id=57
প্যারামিটারের মাধ্যমে ফাংশনে তথ্য সরবরাহ করা হয়। পিএইচপিতে প্যারামিটার ভ্যারিয়েবল এর মতই।
ফাংশনের নামের পরে প্রথম বন্ধনী()-র মধ্যে প্যারামিটার রাখা হয়। আপনার দরকার অনুযায়ী যত খুশি প্যারামিটার ব্যবহার করতে পারবেন, শুধু কমা(,) চিহ্নের মাধ্যমে প্যারামিটারগুলোকে আলাদা করতে হবে।
নিচের উদাহরণে ফাংশনের মধ্যে ১টি প্যারামিটার $name ব্যবহার করা হয়েছে। familyMember ফাংশনকে কল করার সময় এর মধ্যে প্যারামিটারের বিভিন্ন ভ্যালু যেমন- Azizur ব্যবহার করা হয়েছে, যার মাধ্যমে দ্বিতীয় নাম একই রেখে ভিন্ন ভিন্ন প্রথম নামের আউটপুট পাওয়া যায়ঃ
kt_satt_skill_example_id=58
নিচের ফাংশনে ২টি প্যারামিটার $name এবং $birthYear ব্যবহার করা হয়েছেঃ
kt_satt_skill_example_id=59
নিচের উদাহরণের সাহায্যে দেখবো কিভাবে ডিফল্ট(default) প্যারামিটার ব্যবহার করা হয়। যদি setNumber() ফাংশনকে কোনো ধরণের আর্গুমেন্ট ভ্যালু সরবরাহ না করি তাহলে এর ডিফল্ট ভ্যালু গ্রহণ করেঃ
kt_satt_skill_example_id=60
ফাংশন থেকে ভ্যালু রিটার্ন করার জন্য return স্টেটমেন্ট ব্যবহার করা হয়ঃ
kt_satt_skill_example_id=61
পিএইচপির ভার্সন 4.1.0 এ সুপারগ্লোবাল ভ্যারিয়েবলের সূচনা হয়। এই ভ্যারিয়েবলগুলো পিএইচপিতে বিল্ট-ইন থাকার কারণে স্ক্রিপ্ট এর যেকোনো স্কোপ থেকেই এগুলোকে এক্সেস/ব্যবহার করা যায়।
পিএইচপি সেট-আপের সময়ই কিছু পূর্ব সংজ্ঞায়িত ভ্যারিয়েবল পিএইচপির সাথে দেওয়া থাকে এগুলোই হচ্ছে পিএইচপির সুপারগ্লোবাল(Super global) ভ্যারিয়েবল।
নাম শুনেই বুঝা যাচ্ছে যে, কোন ধরনের স্কোপ বিবেচনা না করেই এগুলোকে যেকোন স্ক্রিপ্ট বা স্ক্রিপ্ট এর যেকোনো স্থান থেকে ব্যবহার/এক্সেস করা যায়। যেমন- আপনি ইচ্ছা করলে বিশেষ কোনো কিছু ছাড়াই এগুলোকে ফাংশন, ক্লাস, অথবা ফাইল থেকে ব্যবহার করতে পারবেন।
নিম্নে পিএইচপির সুপারগ্লোবাল ভ্যারিয়েবলগুলো উল্লেখ করা হলোঃ
$GLOBALS
গ্লোবাল ভ্যারিয়েবলসমূহকে যেকোনো স্কোপ থেকে এক্সেস করার জন্য এটি ব্যবহৃত হয়।
$_SERVER
Header, Path এবং Script location সম্মন্ধে বিভিন্ন তথ্য পাওয়ার জন্য এটি ব্যবহৃত হয়।
$_REQUEST
ফর্ম সাবমিট করার পরে ডেটা কালেক্টশন করার জন্য এটি ব্যবহৃত হয়।
$_GET
method="get" এর মাধ্যমে এইচটিএমএল ফর্ম সাবমিট করার পরে ইনপুট ডেটা কালেক্টশন করার জন্য এটি ব্যবহৃত হয়।
$_POST
method="post" এর মাধ্যমে এইচটিএমএল ফর্ম সাবমিট করার পরে ডেটা কালেক্টশন করার জন্য এটি ব্যবহৃত হয়।
$_FILES
এটি একটি Two-dimensional associative array। যা ফাইল আপলোড এর সকল তথ্য ধারণ করে।
$_ENV
Environment variable
$_COOKIE
ইউজার সনাক্ত করার জন্য কুকি এক্সেস করতে এটি ব্যবহৃত হয়।
$_SESSION
Session ভ্যারিয়েবলকে এক্সেস করার জন্য এটি ব্যবহৃত হয়।
বিঃদ্রঃ সুপারগ্লোবাল ভ্যারিয়েবলসমূহ এসোসিয়েটিভ এ্যারে এসোসিয়েটিভ এ্যারের এলিমেন্ট সমূহ key:value জোড়ায় জোড়ায় থাকে। এসোসিয়েটিভ এ্যারে সম্মন্ধে আরও জানতে পিএইচপি এ্যারে অধ্যায় ভিজিট করুন।
এই অধ্যায়ে কিছু সুপারগ্লোবাল ভ্যারিয়েবল সম্মন্ধে আলোচনা করা হয়েছে। বাকীগুলো সংশ্লিষ্ট অধ্যায়ে আলোচনা করা হবে।
$GLOBALS
হচ্ছে পিএইচপি সুপারগ্লোবাল ভ্যারিয়েবল এবং associative array। যেকোনো স্থান(ফাংশন এবং মেথড এর মধ্য থেকেও) থেকে গ্লোবাল ভ্যারিয়েবলকে এক্সেস করার জন্য $GLOBALS
কিওয়ার্ড ব্যাবহার করা হয়।
পিএইচপি সকল গ্লোবাল ভ্যারিয়েবলকে $GLOBALS
[
index
]
array এর মধ্যে জমা রাখে। index এর মধ্যে ভ্যারিয়েবলের নাম জমা রাখে।
নিচের উদাহরণে আমরা দেখবো, কিভাবে সুপারগ্লোবাল ভ্যারিয়েবল $GLOBALS
কে ব্যবহার করা যায়ঃ
kt_satt_skill_example_id=62
উপরের উদাহরণে, z ভ্যারিয়েবলটি $GLOBALS array এর মধ্যে অবস্থান করার কারণে এটাকে ফাংশনের বাইরে থেকেও এক্সেস করা যাচ্ছে!
$_SERVER
হচ্ছে পিএইচপি সুপারগ্লোবাল ভ্যারিয়েবল যা header, path এবং script location সম্মন্ধে বিভিন্ন তথ্য ধারণ করে।
নিচের উদাহরণে আমরা দেখবো, কিভাবে $_SERVER
ভ্যারিয়েবলকে ব্যবহার করা যায়ঃ
kt_satt_skill_example_id=63
নিচের টেবিলে $_SERVER
ভ্যারিয়েবলের মধ্যে ব্যবহৃত অধিকাংশ কনস্ট্যান্ট এর সংক্ষিপ্ত আলোচনা করা হলোঃ
$_SERVER
[
'PHP_SELF'
]
সম্প্রতি যে স্ক্রিপ্ট সম্পাদিত(execution) হয় তার ফাইলের নাম রিটার্ন করে।
$_SERVER
[
'GATEWAY_INTERFACE'
]
সার্ভার যে কমন গেটওয়ে ইন্টারফেস(CGI) ব্যবহার করে তার ভার্সন রিটার্ন করে।
$_SERVER
[
'SERVER_ADDR'
]
হোস্ট সার্ভারের IP এড্রেস রিটার্ন করে।
$_SERVER
[
'SERVER_NAME'
]
হোস্ট সার্ভারের নাম রিটার্ন করে। যেমন- www.sattacademy.com
$_SERVER
[
'SERVER_SOFTWARE'
]
সার্ভারের জন্য ব্যবহৃত সফটওয়্যার এবং এর ভার্সন রিটার্ন করে। (যেমন- Apache/2.4.25 )
$_SERVER
[
'SERVER_PROTOCOL'
]
ইনফরমেশন প্রোটোকলের নাম এবং রিভিশন(revision) রিটার্ন করে। (যেমন HTTP/1.1)
$_SERVER
[
'REQUEST_METHOD'
]
কোনো পেজকে এক্সেস করার জন্য এর রিকুয়েস্ট মেথড(যেমন- POST) রিটার্ন করে।
$_SERVER
[
'REQUEST_TIME'
]
রিকুয়েস্ট শুরু হওয়ার টাইমস্ট্যাম্প রিটার্ন করে। (যেমন- 1377687496)
$_SERVER
[
'QUERY_STRING'
]
যদি কোনো পেজ কুয়েরি স্ট্রিং দ্বারা এক্সেস করা হয় তাহলে কুয়েরি স্ট্রিং রিটার্ন করে।
$_SERVER
[
'HTTP_ACCEPT'
]
বর্তমান রিকুয়েস্ট থেকে Accept header রিটার্ন করে।
$_SERVER
[
'HTTP_ACCEPT_CHARSET'
]
বর্তমান রিকুয়েস্ট থেকে Accept_Charset header রিটার্ন করে। (যেমন utf-8,ISO-8859-1)
$_SERVER
[
'HTTP_HOST'
]
বর্তমান রিকুয়েস্ট থেকে Host header রিটার্ন করে।
$_SERVER
[
'HTTP_REFERER'
]
বর্তমান পেজের সম্পূর্ণ URL রিটার্ন করে (বিশ্বাসযোগ্য নয় কারন সকল user-agents এ সাপোর্ট করে না)
$_SERVER
[
'HTTPS'
]
স্ক্রিপ্টটি কি সিকিউর HTTP প্রোটোকলের মধ্য দিয়ে কুয়েরি হচ্ছে কিনা?
$_SERVER
[
'REMOTE_ADDR'
]
ব্যবহারকারী যেখান থেকে বর্তমান পেজটি ভিউ করছে সেই IP এড্রেস রিটার্ন করে।
$_SERVER
[
'REMOTE_HOST'
]
ব্যবহারকারী যেখান থেকে বর্তমান পেজটি ভিউ করছে সেই Host নাম রিটার্ন করে।
$_SERVER
[
'REMOTE_PORT'
]
ব্যবহারকারীর ডিভাইস থেকে সার্ভারের সাথে যোগাযোগ(communicate) করার জন্য যে পোর্ট(port) ব্যবহার হচ্ছে সেটিকে রিটার্ন করে।
$_SERVER
[
'SCRIPT_FILENAME'
]
বর্তমানে যে স্ক্রিপ্টটি এক্সিকিউট হচ্ছে সেটির absolute pathname রিটার্ন করে।
$_SERVER
[
'SERVER_PORT'
]
যোগাযোগের জন্য ওয়েব সার্ভারের সার্ভার মেশিন যে পোর্ট ব্যবহার করে সেটি রিটার্ন করে। (যেমন 80)
$_SERVER
[
'SERVER_SIGNATURE'
]
server-generated পেজের সাথে যুক্ত সার্ভার ভার্সন এবং ভার্চুয়াল হোস্ট এর নাম রিটার্ন করে।
$_SERVER
[
'PATH_TRANSLATED'
]
বর্তমান স্ক্রিপ্টের ফাইল সিস্টেম বেস(base) path রিটার্ন করে।
$_SERVER
[
'SCRIPT_NAME'
]
কারেন্ট স্ক্রিপ্টের পথ রিটার্ন করে।
$_SERVER
[
'SCRIPT_URI'
]
কারেন্ট পেজের URI কে রিটার্ন করে।
ফর্ম সাবমিট করার পরে ডেটা কালেক্টশন করার জন্য সুপারগ্লোবাল ভ্যারিয়েবল $_REQUEST
ব্যবহার করা হয়।
নিচের উদাহরণে একটি ইনপুট ফিল্ড ও একটি সাবমিট বাটনসহ একটি ফর্ম দেখা যাচ্ছে। যখন কোনো ইউজার ফর্ম ডেটা সাবমিট করার জন্য "Submit" বাটনে ক্লিক করে, তখন এই ডেটা প্রসেস করার জন্য
আরও দেখুন...