apility / plugins
Laravel 插件架构
v0.0.2
2023-01-20 17:04 UTC
Requires
- illuminate/auth: ^8.0|^9.0
- illuminate/console: ^8.0|^9.0
- illuminate/support: ^8.0|^9.0
Requires (Dev)
- illuminate/container: ^8.0|^9.0
This package is auto-updated.
Last update: 2024-09-20 20:31:34 UTC
README
此包提供了一种简单的方法来使您的 Laravel 应用程序模块化。它实现了一个简单的插件架构,允许您创建插件并在共享仓库中注册它们。
然后,您可以通过接口或特性检测来使用已注册的插件。
插件是围绕 Laravel 服务提供者的抽象,因此您可以在插件中使用服务提供者的所有功能。
安装
您可以通过 composer 安装此包
composer require apility/plugins
用法
创建插件
要创建插件,您需要创建一个实现 Apility\Plugins\Contracts\Plugin
接口的类。
最简单的方法是扩展抽象的 Apility\Plugins\Plugin
类。
use Apility\Plugins\Plugin; class MyPlugin extends Plugin { public function register() { // Here you can perform any registration that // you would normally do in a service provider. } }
注册插件
要注册插件,您需要将它们注册到插件仓库中。
插件仓库是一个单例,它实现了 Apility\Plugins\Contracts\PluginRepository
接口。
与仓库交互的推荐方法是使用 Apility\Plugins\Facades\Plugin
门面。
use Apility\Plugins\Facades\Plugin; Plugin::register(MyPlugin::class);
使用插件
此包的主要目的是允许您通过特性检测在应用程序中使用插件。
您可以使用 Apility\Plugins\Facades\Plugin
门面根据特性(接口或特性)解析插件。
use Apility\Plugins\Facades\Plugin; use Apility\Plugins\Plugin as BasePlugin; interface MyFeature { public function doSomething(); } class MyPlugin extends BasePlugin implements MyFeature { public function doSomething() { return 'Hello world!'; } } $plugins = Plugin::all(MyFeature::class); foreach ($plugins as $plugin) { /** @var MyFeature $plugin */ echo $plugin->doSomething(); }
使用插件的其它方法
use Apility\Plugins\Facades\Plugin; // Get the number of registered plugins $pluginCount = Plugin::count(); // Get the number of registered plugins by type $pluginCount = Plugin::count(MyPlugin::class); // Check if a plugin is registered $pluginRegistered = Plugin::has(MyPlugin::class); // Get all plugins $plugins = Plugin::all(); // Get all plugins by type $plugins = Plugin::all(MyPlugin::class); // Get the first registered plugin $plugin = Plugin::first(); // Get a plugin by type $plugin = Plugin::first(MyPlugin::class);
生成插件
您可以使用 make:plugin
命令来生成插件。
php artisan make:plugin MyPlugin
带有策略的插件生成
您可以使用 --policy
选项来生成带有相应策略的插件。
php artisan make:plugin MyPlugin --policy