কনস্ট্যান্ট ভ্যারিয়েবলস অ্যান্ড ডেটা টাইপস : PHP ভ্যারিয়েবল (Variable) Declare

 




কনস্ট্যান্ট ভ্যারিয়েবলস অ্যান্ড ডেটা টাইপস : PHP ভ্যারিয়েবল (Variable) Declare

PHP-তে ভ্যারিয়েবল ডিক্লেয়ার করা বেশ সহজ, কারণ এটি একটি Loosely Typed ল্যাঙ্গুয়েজ। অর্থাৎ, ভ্যারিয়েবল তৈরির সময় আপনাকে বলে দিতে হয় না যে এটি কী ধরণের ডেটা (যেমন: সংখ্যা নাকি টেক্সট) হোল্ড করবে।

নিচে PHP ভ্যারিয়েবল এবং ডেটা টাইপ সম্পর্কে বিস্তারিত আলোচনা করা হলো:


. PHP ভ্যারিয়েবল (Variable) ডিক্লেয়ার করার নিয়ম

PHP-তে ভ্যারিয়েবল ডিক্লেয়ার করতে হলে নামের শুরুতে অবশ্যই ডলার সাইন ($) ব্যবহার করতে হয়।

ভ্যারিয়েবল তৈরির নিয়মাবলী:

  • ভ্যারিয়েবল অবশ্যই $ চিহ্ন দিয়ে শুরু হতে হবে।
  • নামের প্রথম অক্ষর কোনো লেটার (a-z) বা আন্ডারস্কোর (_) হতে হবে।
  • নামের শুরুতে কোনো সংখ্যা (-) থাকা যাবে না।
  • ভ্যারিয়েবল নেম Case-sensitive (অর্থাৎ $age এবং $AGE দুটি আলাদা ভ্যারিয়েবল)

উদাহরণ:

PHP

<?php

    $name = "Arif"; // String

    $age = 25;      // Integer

    $price = 10.5;  // Float

?>


. PHP ডেটা টাইপ (Data Types)

PHP-তে সাধারণত প্রকারের প্রক্সিমিটি বা প্রিমিটিভ ডেটা টাইপ দেখা যায়। প্রধান কয়েকটি হলো:

ডেটা টাইপ

বর্ণনা

উদাহরণ

String

একগুচ্ছ ক্যারেক্টার বা টেক্সট।

"Hello World"

Integer

পূর্ণসংখ্যা (দশমিক ছাড়া)

596

Float

দশমিক যুক্ত সংখ্যা।

19.99

Boolean

সত্য অথবা মিথ্যা।

true অথবা false

Array

একটি ভ্যারিয়েবলে অনেকগুলো ভ্যালু জমানো।

array("Red", "Green")

Object

ইউজার ডিফাইনড ক্লাস থেকে তৈরি।

(Class Instance)

NULL

যার কোনো ভ্যালু নেই।

null


. কনস্ট্যান্ট (Constants)

কনস্ট্যান্ট হলো এমন একটি নাম বা আইডেন্টিফায়ার যার ভ্যালু স্ক্রিপ্ট চলাকালীন পরিবর্তন করা যায় না। একবার ডিফাইন করলে এটি পুরো প্রোগ্রামে একই থাকে।

PHP-তে কনস্ট্যান্ট ডিফাইন করার জন্য define() ফাংশন ব্যবহার করা হয়:

  • Syntax: define(name, value);

উদাহরণ:

PHP

<?php

    define("GREETING", "Welcome to PHP!");

    echo GREETING; // আউটপুট: Welcome to PHP!

?>

মনে রাখবেন: কনস্ট্যান্টের আগে কিন্তু $ চিহ্ন বসে না।


ভ্যারিয়েবল এবং কনস্ট্যান্টের পার্থক্য

বৈশিষ্ট্য

ভ্যারিয়েবল ($)

কনস্ট্যান্ট (define)

ভ্যালু পরিবর্তন

প্রোগ্রামের যেকোনো জায়গায় পরিবর্তন সম্ভব।

একবার সেট করলে পরিবর্তন করা যায় না।

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

সরাসরি $ চিহ্ন দিয়ে।

define() ফাংশন ব্যবহার করে।

স্কোপ

লোকাল বা গ্লোবাল স্কোপ মেনে চলে।

ডিফল্টভাবে গ্লোবাল (যেকোনো জায়গা থেকে অ্যাক্সেসযোগ্য)

 

PHP-তে অ্যারে (Array) একটি অত্যন্ত শক্তিশালী ডেটা টাইপ, কারণ এটি একটি একক ভ্যারিয়েবলের মধ্যে একাধিক ভ্যালু বা ডেটা জমা রাখতে পারে।

PHP-তে মূলত তিন ধরনের অ্যারে ব্যবহার করা হয়। নিচে উদাহরণসহ সেগুলোর বর্ণনা দেওয়া হলো:


. ইনডেক্সড অ্যারে (Indexed Array)

এই ধরনের অ্যারেতে প্রতিটি উপাদানের একটি নির্দিষ্ট সংখ্যাসূচক ইনডেক্স (Index) থাকে, যা সাধারণত থেকে শুরু হয়।

উদাহরণ:

PHP

<?php

    $colors = array("Red", "Green", "Blue");

   

    // অথবা নতুন পদ্ধতিতে:

    $colors = ["Red", "Green", "Blue"];

 

    echo $colors[0]; // আউটপুট: Red

?>


. অ্যাসোসিয়েটিভ অ্যারে (Associative Array)

এখানে ইনডেক্স হিসেবে সংখ্যা ব্যবহারের বদলে নির্দিষ্ট 'কি' (Key) ব্যবহার করা হয়। এটি অনেকটা 'নাম-ভ্যালু' জোড়ার মতো কাজ করে।

উদাহরণ:

PHP

<?php

    $age = [

        "Karim" => 25,

        "Rahim" => 30,

        "Arif"  => 22

    ];

 

    echo "Karim is " . $age['Karim'] . " years old.";

    // আউটপুট: Karim is 25 years old.

?>


. মাল্টি-ডাইমেনশনাল অ্যারে (Multi-dimensional Array)

যখন একটি অ্যারের ভেতরে আরও এক বা একাধিক অ্যারে থাকে, তখন তাকে মাল্টি-ডাইমেনশনাল অ্যারে বলে। এটি সাধারণত জটিল ডেটা টেবিল আকারে সাজাতে ব্যবহৃত হয়।

উদাহরণ:

PHP

<?php

    $students = [

        ["Rahim", 20, "A+"],

        ["Karim", 22, "B"],

        ["Arif",  21, "A"]

    ];

 

    echo $students[0][0]; // আউটপুট: Rahim

    echo $students[1][2]; // আউটপুট: B

?>


কিছু গুরুত্বপূর্ণ অ্যারে ফাংশন

PHP-তে অ্যারে নিয়ে কাজ করার জন্য অনেক বিল্ট-ইন ফাংশন আছে:

  • count($array) : অ্যারেতে কয়টি উপাদান আছে তা জানায়।
  • sort($array) : উপাদানগুলোকে ছোট থেকে বড় ক্রমে সাজায়।
  • array_push($array, "Value") : অ্যারের শেষে নতুন উপাদান যোগ করে।

·         PHP-তে অ্যারের ডেটাগুলো একে একে দেখানোর জন্য লুপ (Loop) ব্যবহার করা সবচেয়ে বুদ্ধিমানের কাজ। বিশেষ করে যখন আপনার কাছে অনেক বড় লিস্ট থাকে।

·         নিচে প্রধান তিনটি অ্যারের জন্য লুপের ব্যবহার দেখানো হলো:

·        

·         . ইনডেক্সড অ্যারে এবং foreach লুপ

·         ইনডেক্সড অ্যারের প্রতিটি ভ্যালু প্রিন্ট করার জন্য foreach লুপ সবচেয়ে সহজ।

·         PHP

·         <?php
·             $fruits = ["Mango", "Apple", "Banana", "Orange"];
·          
·             foreach ($fruits as $fruit) {
·                 echo "Fruit Name: " . $fruit . "<br>";
·             }
·         ?>
·        

·         . অ্যাসোসিয়েটিভ অ্যারে এবং Key => Value লুপ

·         অ্যাসোসিয়েটিভ অ্যারেতে আমাদের Key এবং Value উভয়ই প্রয়োজন হয়। foreach লুপ এখানে চমৎকার কাজ করে।

·         PHP

·         <?php
·             $student_scores = [
·                 "Rahim" => 85,
·                 "Karim" => 92,
·                 "Arif"  => 78
·             ];
·          
·             foreach ($student_scores as $name => $score) {
·                 echo $name . " scored " . $score . "<br>";
·             }
·         ?>
·        

·         . মাল্টি-ডাইমেনশনাল অ্যারে এবং নেস্টেড লুপ

·         যখন অ্যারের ভেতর অ্যারে থাকে, তখন আমাদের একটি লুপের ভেতর আরেকটি লুপ (Nested Loop) ব্যবহার করতে হয়।

·         PHP

·         <?php
·             $students = [
·                 ["Rahim", 20, "A+"],
·                 ["Karim", 22, "B"],
·                 ["Arif"21, "A"]
·             ];
·          
·             foreach ($students as $student) {
·                 foreach ($student as $info) {
·                     echo $info . " ";
·                 }
·                 echo "<br>";
·             }
·         ?>
·        

·         বোনাস: for লুপের ব্যবহার

·         যদি আপনি প্রথাগত for লুপ ব্যবহার করতে চান, তবে আপনাকে অ্যারের দৈর্ঘ্য জানতে হবে count() ফাংশন দিয়ে।

·         PHP

·         <?php
·             $cars = ["Toyota", "BMW", "Audi"];
·             $arrLength = count($cars);
·          
·             for($x = 0; $x < $arrLength; $x++) {
·                 echo $cars[$x] . "<br>";
·             }
·         ?>

·         ছোট একটি টিপস:

·         কোড লিখার সময় যদি দ্রুত দেখতে চান অ্যারের ভেতর কী কী আছে (ডিবাগিং করার জন্য), তবে print_r($array_name); ব্যবহার করতে পারেন। এটি ডেভেলপারদের খুব প্রিয় একটি কমান্ড!

. লজিক্যাল পার্ট: If-Else কন্ডিশন

if-else ব্যবহার করা হয় কোনো একটি শর্তের ওপর ভিত্তি করে সিদ্ধান্ত নেওয়ার জন্য। যদি শর্তটি সত্য হয় তবে এক ধরণের কাজ হবে, আর মিথ্যা হলে অন্য ধরণের কাজ হবে।

উদাহরণ:

PHP

<?php

    $score = 85;

 

    if ($score >= 80) {

        echo "আপনি A+ পেয়েছেন!";

    } elseif ($score >= 70) {

        echo "আপনি A পেয়েছেন!";

    } else {

        echo "আপনি পাশ করেছেন।";

    }

?>


. পিএইচপি ফাংশন (Function)

ফাংশন হলো একগুচ্ছ কোড যা একটি নির্দিষ্ট কাজ করার জন্য তৈরি করা হয়। ফাংশনের সুবিধা হলোএকবার কোড লিখে সেটি বারবার ব্যবহার করা যায় (Code Reusability)

ফাংশন তৈরির নিয়ম:

  • function কিওয়ার্ড দিয়ে শুরু করতে হয়।
  • একটি অর্থবহ নাম দিতে হয়।
  • ব্র্যাকেটের ভেতরে প্যারামিটার (ঐচ্ছিক) দেওয়া যায়।

উদাহরণ:

PHP

<?php

    // ফাংশন তৈরি (Declaration)

    function sayHello($name) {

        return "হ্যালো, " . $name . "! PHP শিখতে কেমন লাগছে?";

    }

 

    // ফাংশন কল করা (Calling)

    echo sayHello("আরিফ");

    // আউটপুট: হ্যালো, আরিফ! PHP শিখতে কেমন লাগছে?

?>


. কেন ফাংশন এবং কন্ডিশন একসাথে ব্যবহার করবেন?

বাস্তব জীবনে আমরা যখন কোনো ওয়েবসাইট বানাই, তখন এই দুইটির সংমিশ্রণ প্রয়োজন হয়। যেমন: একজন ইউজার লগইন করেছেন কি না তা চেক করার জন্য।

PHP

<?php

    function checkLogin($isLoggedIn) {

        if ($isLoggedIn == true) {

            return "ড্যাশবোর্ডে স্বাগতম!";

        } else {

            return "দয়া করে আগে লগইন করুন।";

        }

    }

 

    echo checkLogin(true); // আউটপুট: ড্যাশবোর্ডে স্বাগতম!

?>


আপনার জন্য একটি ছোট চ্যালেঞ্জ:

আপনি কি এমন একটি ফাংশন লিখতে পারবেন যা একটি সংখ্যা গ্রহণ করবে এবং if-else ব্যবহার করে বলবে সংখ্যাটি জোড় (Even) নাকি বিজোড় (Odd)?

PHP-তে Form Handling বা ফর্ম ম্যানেজমেন্ট অত্যন্ত গুরুত্বপূর্ণ, কারণ এর মাধ্যমেই ব্যবহারকারী ওয়েবসাইটকে তথ্য পাঠাতে পারে (যেমন: লগইন, রেজিস্ট্রেশন বা কন্টাক্ট ফর্ম)

তথ্য আদান-প্রদানের জন্য সাধারণত দুটি মেথড ব্যবহার করা হয়: GET এবং POST


. GET বনাম POST: প্রধান পার্থক্য

ডেটা পাঠানোর সময় এই দুটি মেথড ভিন্নভাবে কাজ করে। এদের পার্থক্যগুলো নিচে টেবিল আকারে দেওয়া হলো:

বৈশিষ্ট্য

GET মেথড

POST মেথড

দৃশ্যমানতা

সব ডেটা URL- দেখা যায়।

ডেটা গোপন থাকে (URL- দেখা যায় না)

নিরাপত্তা

পাসওয়ার্ড বা সংবেদনশীল তথ্যের জন্য অনিরাপদ।

অনেক বেশি নিরাপদ।

ডেটা লিমিট

সর্বোচ্চ ২০৪৮ ক্যারেক্টার পাঠানো যায়।

অনেক বড় ডেটা পাঠানো সম্ভব।

ব্যবহার

সার্চ বা ফিল্টার করার কাজে বেশি ব্যবহৃত হয়।

ফর্ম সাবমিট বা ফাইল আপলোডে ব্যবহৃত হয়।


. একটি বাস্তব উদাহরণ (POST Method)

ধরুন, আপনি একটি ছোট্ট ফর্ম তৈরি করেছেন যেখানে নাম এবং ইমেইল ইনপুট নেওয়া হবে।

HTML ফর্ম (index.php):

HTML

<form action="welcome.php" method="post">
  নাম: <input type="text" name="fname"><br>
  ইমেইল: <input type="text" name="email"><br>
  <input type="submit" value="জমা দিন">
</form>

PHP প্রসেসিং (welcome.php):

যখন ব্যবহারকারী "জমা দিন" বাটনে ক্লিক করবেন, তখন welcome.php ফাইলটি সেই ডেটা রিসিভ করবে এভাবে:

PHP

<?php
    // $_POST একটি সুপার গ্লোবাল ভ্যারিয়েবল যা ফর্মের ডেটা ধরে রাখে
    $name = $_POST['fname'];
    $email = $_POST['email'];
 
    echo "স্বাগতম, " . $name . "!<br>";
    echo "আপনার ইমেইল অ্যাড্রেস হলো: " . $email;
?>

. সুপার গ্লোবাল ভ্যারিয়েবল $_REQUEST

কখনও কখনও আমরা জানি না যে ডেটা GET নাকি POST মেথডে আসবে। সেক্ষেত্রে PHP-তে $_REQUEST ব্যবহার করা যায়, যা উভয় মেথড থেকেই ডেটা গ্রহণ করতে পারে।


. সিকিউরিটি টিপস (Data Validation)

ব্যবহারকারীর পাঠানো ডেটা সরাসরি আউটপুট দেওয়া ঝুঁকিপূর্ণ (হ্যাকিং বা ক্রস-সাইট স্ক্রিপ্টিং থেকে বাঁচতে) সবসময় htmlspecialchars() ফাংশন ব্যবহার করা উচিত:

PHP

$name = htmlspecialchars($_POST['fname']);

ডেটাবেসের সাথে কানেক্ট হওয়া এবং ফর্মের ডেটা সেভ করা PHP শেখার সবথেকে রোমাঞ্চকর ধাপ! কারণ এখানেই আপনার ওয়েবসাইটটি Dynamic হয়ে ওঠে।

আমরা সাধারণত MySQLi (MySQL Improved) অথবা PDO ব্যবহার করে ডেটাবেসের সাথে যোগাযোগ করি। নিচে MySQLi ব্যবহার করে ডেটা সেভ করার একটি সহজ উদাহরণ দেওয়া হলো:


. ডেটাবেস কানেকশন তৈরি করা

প্রথমে আপনাকে একটি কানেকশন ফাইল বা কোড লিখতে হবে যা আপনার PHP স্ক্রিপ্টকে MySQL সার্ভারের সাথে যুক্ত করবে।

PHP

<?php

$servername = "localhost";

$username = "root";

$password = "";

$dbname = "my_database";

 

// কানেকশন তৈরি করা

$conn = new mysqli($servername, $username, $password, $dbname);

 

// কানেকশন চেক করা

if ($conn->connect_error) {

    die("কানেকশন ব্যর্থ হয়েছে: " . $conn->connect_error);

}

?>


. ফর্ম থেকে ডেটা নিয়ে ডেটাবেসে ইনসার্ট করা

ধরা যাক, আমাদের একটি টেবিল আছে যার নাম users এবং সেখানে name email নামে দুটি কলাম আছে।

PHP

<?php

// যদি ফর্মটি POST মেথডে সাবমিট করা হয়

if ($_SERVER["REQUEST_METHOD"] == "POST") {

   

    // ফর্মের ডেটা ভ্যারিয়েবলে নেওয়া

    $user_name = $_POST['fname'];

    $user_email = $_POST['email'];

 

    // SQL Query তৈরি করা (ডেটা ইনসার্ট করার জন্য)

    $sql = "INSERT INTO users (name, email) VALUES ('$user_name', '$user_email')";

 

    if ($conn->query($sql) === TRUE) {

        echo "নতুন রেকর্ড সফলভাবে তৈরি হয়েছে!";

    } else {

        echo "Error: " . $sql . "<br>" . $conn->error;

    }

}

 

$conn->close(); // কাজ শেষ হলে কানেকশন বন্ধ করা ভালো

?>


. গুরুত্বপূর্ণ সিকিউরিটি টিপস (SQL Injection)

উপরের কোডটি সহজবোধ্য করার জন্য সরাসরি ভ্যারিয়েবল ব্যবহার করা হয়েছে। কিন্তু বাস্তবে হ্যাকাররা ফর্মের ইনপুটে ক্ষতিকর কোড লিখে আপনার ডেটাবেস নষ্ট করে দিতে পারে (যাকে SQL Injection বলে)

এটি রোধ করতে প্রফেশনালরা Prepared Statements ব্যবহার করেন। এটি অনেকটা এরকম:

PHP

$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");

$stmt->bind_param("ss", $user_name, $user_email);

$stmt->execute();


Post a Comment

0 Comments