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 পরিষ্কার থাকে