PHP Namespaces (নেমস্পেস)

PHP Namespaces (নেমস্পেস)

Namespace PHP-তে এমন একটি ব্যবস্থা যা একাধিক ক্লাস, ফাংশন বা কনস্ট্যান্ট একই নামে ব্যবহার করতে দেয় আলাদা আলাদা group বা context-এ।
এটি name conflict এড়াতে সাহায্য করে, বিশেষ করে বড় প্রজেক্টে বা লাইব্রেরি ব্যবহারের সময়।

Namespace কেন প্রয়োজন?

  • একই নামে একাধিক ক্লাস বা ফাংশন ব্যবহারের সুযোগ
  • বড় অ্যাপ্লিকেশন গঠনে ক্লিন ও মডুলার কোড
  • অন্যান্য লাইব্রেরির সাথে সংঘর্ষ এড়ানো

কিভাবে Namespace ঘোষণা করবেন?

PHP-তে namespace ডিফাইন করতে হয় ফাইলের একদম শুরুতে:
namespace MyApp;

উদাহরণঃ

<?php
namespace MyApp;

class User {
    public function info() {
        return "আমি MyApp এর User ক্লাস।";
    }
}
?>

অন্য namespace থেকে class ব্যবহার

অন্য namespace-এর ক্লাস ব্যবহারের জন্য use কিওয়ার্ড ব্যবহার করতে হয় অথবা ফুল পাথ দিয়ে access করতে হয়।

উদাহরণঃ

<?php
require 'MyApp/User.php';

use MyApp\User;

$user = new User();
echo $user->info();
?>

Multiple Namespace এক ফাইলে

যদি এক ফাইলে একাধিক namespace ব্যবহার করতে হয়, তবে প্রতিটি আলাদা ব্লক হিসেবে লিখতে হবে:

<?php
namespace First {
    class Hello {
        public static function greet() {
            echo "Hello from First namespace";
        }
    }
}

namespace Second {
    class Hello {
        public static function greet() {
            echo "Hello from Second namespace";
        }
    }
}
?>

Aliases (উপনাম) ব্যবহার

একই নামের ক্লাস এড়িয়ে যেতে Alias ব্যবহার করা যায়:

<?php
use MyApp\User as AppUser;

$appUser = new AppUser();
?>

Namespace বনাম Directory Structure

PSR-4 Standard অনুযায়ী Namespace এবং ফাইল/ফোল্ডারের স্ট্রাকচার সাধারণত মিলিয়ে রাখা হয়:

Namespace Directory
App\Models\User /App/Models/User.php
Library\PDF\Generator /Library/PDF/Generator.php

সারসংক্ষেপ

  • Namespace বড় প্রজেক্টে ক্লাস কনফ্লিক্ট কমায়
  • use কিওয়ার্ডের মাধ্যমে import সহজ হয়
  • Alias ব্যবহারে code clear এবং readable হয়
  • PSR-4 Autoload অনুসরণ করলে structure পরিষ্কার থাকে

Leave a Reply