# Plugin ক্লাস

**নেমস্পেস:** `Bizzwishlist`  
**ফাইল:** `includes/Plugin.php`

## বর্ণনা

`Plugin` হলো প্লাগিনের মূল ক্লাস। এটি সিঙ্গেলটন প্যাটার্ন ব্যবহার করে এবং প্লাগিনের সকল কম্পোনেন্ট ইনিশিয়ালাইজ করে।

## প্রপার্টি সমূহ

| প্রপার্টি | ধরন | বর্ণনা |
|-----------|------|--------|
| `$instance` | `Plugin\|null` | সিঙ্গেলটন ইন্সট্যান্স |
| `$repository` | `WishlistRepository` | ডাটাবেস রিপোজিটরি |
| `$session` | `Session` | সেশন হেল্পার |

## মেথড সমূহ

### `instance()`
- **ধরন:** `static`
- **রিটার্ন:** `Plugin`
- সিঙ্গেলটন ইন্সট্যান্স রিটার্ন করে। প্রথমবার কল করলে নতুন ইন্সট্যান্স তৈরি হয়।

### `__construct()`
- **ধরন:** `private`
- ডিপেন্ডেন্সি ইনিশিয়ালাইজ করে এবং সকল হুক রেজিস্টার করে।

### `init_dependencies()`
- **ধরন:** `private`
- `Session` এবং `WishlistRepository` ইন্সট্যান্স তৈরি করে।

### `init_hooks()`
- **ধরন:** `private`
- সকল ওয়ার্ডপ্রেস হুক রেজিস্টার করে, যেমন:
  - ফ্রন্টএন্ড অ্যাসেট লোড
  - উইশলিস্ট বাটন রেন্ডার
  - শর্টকোড রেজিস্ট্রেশন (`[bizzwishlist]`, `[bizzwishlist_mini]`)
  - AJAX অ্যাকশন (toggle, remove, get_count, get_items, add_all_to_cart, add_selected_to_cart, add_to_cart_single)
  - REST API রুট
  - এডমিন মেনু ও সেটিংস
  - সেশন ইনিশিয়ালাইজেশন
  - শেয়ার্ড উইশলিস্ট কুয়েরি ভার
  - গেস্ট উইশলিস্ট মার্জ

### `register_query_vars( array $vars )`
- **রিটার্ন:** `array`
- `bizzwishlist_share` কুয়েরি ভার যোগ করে।

### `merge_guest_wishlist( string $user_login, WP_User $user )`
- ইউজার লগইন করলে গেস্ট উইশলিস্ট আইটেম ইউজারের উইশলিস্টে মার্জ করে।

### `get_repository()`
- **রিটার্ন:** `WishlistRepository`

### `get_session()`
- **রিটার্ন:** `Session`
