অ্যাপ্লিকেশন প্লাগইন
প্রতিটি অ্যাপ্লিকেশন প্লাগইন হল একটি সম্পূর্ণ অ্যাপ্লিকেশন, যা {মূল প্রকল্প}/plugin
ডিরেক্টরিতে রয়েছে।
পরামর্শ
নিচের কমান্ড ব্যবহার করেphp webman app-plugin:create {প্লাগইন নাম}
(webman/console>=1.2.16 প্রয়োজন) আপনি লোকালে একটি অ্যাপ্লিকেশন প্লাগইন তৈরি করতে পারেন,
উদাহরণস্বরূপphp webman app-plugin:create cms
এমনভাবে নিম্নলিখিত ডিরেক্টরি প্রস্তুত করবে
plugin/
└── cms
├── app
│ ├── controller
│ │ └── IndexController.php
│ ├── exception
│ │ └── Handler.php
│ ├── functions.php
│ ├── middleware
│ ├── model
│ └── view
│ └── index
│ └── index.html
├── config
│ ├── app.php
│ ├── autoload.php
│ ├── container.php
│ ├── database.php
│ ├── exception.php
│ ├── log.php
│ ├── middleware.php
│ ├── process.php
│ ├── redis.php
│ ├── route.php
│ ├── static.php
│ ├── thinkorm.php
│ ├── translation.php
│ └── view.php
└── public
আমরা দেখছি যে একটি অ্যাপ্লিকেশন প্লাগইনের ডিরেক্টরি সমমত এবং কনফিগারেশন ফাইল থাকে যে সমান। বাস্তবত, একটি অ্যাপ্লিকেশন প্লাগইন ডেভেলপ করা এবং একটি webman প্রজেক্ট ডেভেলপ করা একই অভিজ্ঞতা, কেবলমাত্র কিছু বিষয়গুলি মনে রাখতে হয়।
নেমস্পেস
প্লাগইন ডিরেক্টরি এবং নেমস্পেস PSR4 মাপনীর অনুযায়ী পরিচালনা করে, কারণ প্লাগইনগুলি সবগুলি ডিরেক্টরিতে রাখা হয়, তাই নেমস্পেসগুলি plugin দিয়ে শুরু হয়, উদাহরণস্বরূপ plugin\cms\app\controller\UserController
, এখানে cms হল প্লাগইনের উৎস কোড মূল ডিরেক্টরি।
URL অ্যাক্সেস
অ্যাপ্লিকেশন প্লাগইন URL ঠিকানা পথ হল /app
দিয়ে শুরু, উদাহরণস্বরূপ plugin\cms\app\controller\UserController
এর URL ঠিকানা হল http://127.0.0.1:8787/app/cms/user
।
স্থিতিশীল ফাইল
স্থিতিশীল ফাইলগুলি plugin/{প্লাগইন}/public
ডিরেক্টরিতে রাখা হয়, উদাহরণস্বরূপ http://127.0.0.1:8787/app/cms/avatar.png
আসলে plugin/cms/public/avatar.png
ফাইলটি ধারণ করে।
কনফিগারেশন ফাইল
প্লাগইনের কনফিগারেশন সাধারণ webman প্রজেক্টের মতোই, তবে প্লাগইনের কনফিগারেশন সাধারণত কেবলমাত্র বর্তমান প্লাগইনের জন্য প্রযোজ্য হয়, মূল প্রকল্পের জন্য ধরা হয় না।
যেমনঃ plugin.cms.app.controller_suffix
এর মানটি শুধুমাত্র প্লাগইনের নিয়ন্ত্রকের পরবর্তী অংশের জন্য প্রভাব ফেলে, মূল প্রকল্পে কোনো প্রভাব ফেলে না।
উদাহরণস্বরূপ, plugin.cms.app.controller_reuse
এর মানটি শুধুমাত্র প্লাগইনের নিয়ন্ত্রক যথা কোনো প্রভাব ফেলে না।
উদাহরণস্বরূপ plugin.cms.middleware
এর মানটি শুধুমাত্র প্লাগইনের মধ্যবর্তীগুলির নিয়ন্ত্রণের জন্য প্রভাব ফেলে, মূল প্রকল্পে কোনো প্রভাব ফেলে না।
উদাহরণস্বরূপ, plugin.cms.view
এর মানটি শুধুমাত্র প্লাগইনের বিচার করা ডিরেক্টরিতে প্রভাব ফেলে, মূল প্রকল্পে কোনো প্রভাব ফেলে না।
উদাহরণস্বরূপ, plugin.cms.container
এর মানটি শুধুমাত্র প্লাগইনের ব্যবহার করা কন্টেনারের জন্য প্রভাব ফেলে, মূল প্রকল্পে কোনো প্রভাব ফেলে না।
উদাহরণস্বরূপ, plugin.cms.exception
এর মানটি শুধুমাত্র প্লাগইনের অস্বাভাবিক ব্যবস্থাপনা ক্লাসের জন্য প্রভাব ফেলে, মূল প্রকল্পে কোনো প্রভাব ফেলে না।
তবে, রাউট গ্লোবাল হয়, তাই প্লাগইন কনফিগারেশন করা রাউট গুলি ঝামেলা দেয়।
কনফিগ পাওয়া
একটি প্লাগইন কনফিগারেশন পেতে config('plugin.{প্লাগইন}.{নির্দিষ্ট কনফিগ}');
ব্যবহার করুন, যেমন plugin/cms/config/app.php
এর সমস্ত কনফিগারেশন পেতে config('plugin.cms.app')
ব্যবহার করুন।
একইভাবে, মূল প্রকল্প বা অন্য প্লাগইন ব্যবহার করে config('plugin.cms.xxx')
ব্যবহার করে cms প্লাগইনের কনফিগারেশন পেতে পারেন।
সাপোর্ট করা না কনফিগারেশন
অ্যাপ্লিকেশন প্লাগইনগুলি server.php, session.php কনফিগারেশন সাপোর্ট করে না, app.request_class
, app.public_path
, app.runtime_path
কনফিগারেশন সাপোর্ট করে না।
ডাটাবেস
প্লাগইন তাদের নিজেদের ডাটাবেস কনফিগার করতে পারে, উদাহরণস্বরূপ, plugin/cms/config/database.php
এর কন্টেন্ট এমন হতে পারে
return [
'default' => 'mysql',
'connections' => [
'mysql' => [ // mysql হল যোগাযোগের নাম
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'ডাটাবেস',
'username' => 'ইউজারনেম',
'password' => 'পাসওয়ার্ড',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
],
'admin' => [ // admin হল যোগাযোগের নাম
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'ডাটাবেস',
'username' => 'ইউজারনেম',
'password' => 'পাসওয়ার্ড',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
],
],
];
উদাহরণস্বরূপ, Db::connection('plugin.{প্লাগইন}.{যোগাযোগের নাম}');
ব্যবহার করে সনাক্ত করা যাবে, উদাহরণস্বরূপ
use support\Db;
Db::connection('plugin.cms.mysql')->table('user')->first();
Db::connection('plugin.cms.admin')->table('admin')->first();
মূল প্রকল্পের ডাটাবেস ব্যবহার করতে চাইলে, সরাসরি ব্যবহার করতে পারেন, উদাহরণস্বরূপ
use support\Db;
Db::table('user')->first();
// ধরা গেল মূল প্রকল্পে একটি অ্যাডমিন কানেকশন কনফিগার করা আছে
Db::connection('admin')->table('admin')->first();
পরামর্শ
থিংকওআরএম এই ধরনের ব্যবহার করে।
রেডিস
রেডিস ডাটাবেসের ব্যবহারকারী প্যারামিটার এবং ডাটাবেসের মতো, উদাহরণস্বরূপ plugin/cms/config/redis.php
return [
'default' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 0,
],
'cache' => [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 1,
],
];
ব্যবহার করার সময়
use support\Redis;
Redis::connection('plugin.cms.default')->get('key');
Redis::connection('plugin.cms.cache')->get('key');
একইভাবে, আপনি চাইলে মূল প্রকল্পের রেডিস কনফিগারেশন পুনরায় ব্যবহার করতে পারেন
use support\Redis;
Redis::get('key');
// ধরা গেল মূল প্রকল্পে একটি ক্যাশ কানেকশন কনফিগার করা আছে
Redis::connection('cache')->get('key');
লগ
লগ ক্লাসের ব্যবহারও ডাটাবেস ব্যবহারের মতোই।
use support\Log;
Log::channel('plugin.admin.default')->info('পরীক্ষা');
যদি মাস্টার প্রোজেক্টের লগ কনফিগারেশন পুনর্ব্যবহার করতে চান, তবে সরাসরি নিম্নলিখিত ব্যবহার করতে হবে।
use support\Log;
Log::info('লগ বিষয়বস্ত');
// মনে করুন মাস্টার প্রোজেক্টে 'test' লগ কনফিগার আছে
Log::channel('test')->info('লগ বিষয়বস্ত');
অ্যাপ্লিকেশন প্লাগইন ইনস্টল এবং আনইনস্টল
অ্যাপ্লিকেশন প্লাগইন ইনস্টল করার সময় পাশাপাশি কেবল প্লাগইন ডিরেক্টরিটি {মাস্টার প্রোজেক্ট}/plugin
ডিরেক্টরিতে কপি করতে হবে, সেইসাথে প্রভাব ফেলানোর জন্য reload বা restart করা প্রয়োজন।
আনইনস্টল করার সময় মুছে দিতে হবে {মাস্টার প্রোজেক্ট}/plugin
এর অধীনের প্লাগইন ডিরেক্টরি।