maslosoft / signals
无线跨组件通信
4.0.5
2023-06-16 07:18 UTC
Requires
- php: >=7.4
- maslosoft/addendum: ^7@dev
- maslosoft/cli-shared: ^1 | ^2
- maslosoft/embedi: ^2
- psr/log: ^1|^2|^3
- symfony/console: ^5|^6
Requires (Dev)
- codeception/codeception: ^5
- codeception/module-asserts: ^3
- maslosoft/sitcom: ^1 | ^2
- maslosoft/zamm: ^1 | ^2
- roave/security-advisories: dev-latest
- dev-master
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.0.1
- 3.0.0
- 2.0.21
- 2.0.20
- 2.0.19
- 2.0.18
- 2.0.17
- 2.0.16
- 2.0.15
- 2.0.14
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.1.18
- 1.1.17
- 1.1.16
- 1.1.15
- 1.1.14
- 1.1.13
- 1.1.12
- 1.1.11
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.0.9
- 0.0.8
- 0.0.7
- 0.0.6
- 0.0.5
This package is auto-updated.
Last update: 2024-09-16 10:05:46 UTC
README
Maslosoft Signals
快速安装
composer require maslosoft/signals
文档
连接组件
各种应用程序组件必须相互连接。这应该以一种软方式完成,以便在添加或删除组件代码时不需要更改。
无线连接
Signals 提供类似无线连接的组件。其中之一发出信号,另一个接收它。这也可以反过来进行。一个应用程序组件发送信号,而几个组件则监听该信号。
无线跨组件通信
此组件允许应用程序组件之间的交互,无需先前的或明确的分配。
设置
使用 composer 进行安装
composer require maslosoft/signals:"*"
或者通过硬方法,在项目中的某处下载并确保自动加载对 Maslosoft\Signals\*
的工作正常,并且你也包括依赖项;
设置信号。在调用 init
之后,任何进一步的实例都将按照下面的 $signal
进行配置。
$signal = new Maslosoft\Signals\Signal(); $signal->runtimePath = RUNTIME_PATH; $signal->paths = [ MODELS_PATH ]; $signal->init();
生成信号定义,仅一次,将其连接到您的构建脚本等。
$signal = new Maslosoft\Signals\Signal(); (new Maslosoft\Signals\Utility($signal))->generate();
使用方法
发出信号
定义信号
namespace MyNamespace\Signals; class AccountMenuItems extends AdminMenuItems { public $item = []; }
使用 @SlotFor
注解定义具有槽的类
namespace Maslosoft\Ilmatar\Modules; class MyModule { /** * @SlotFor(MyNamespace\Signals\AccountMenuItems) */ public function reactOnAccountMenu(MyNamespace\Signals\AccountMenuItems $signal) { $signal->item = [ 'url' => '/content/myBlog', 'label' => 'My blog' ]; } }
发出信号并获取此调用的结果
$signal = new Maslosoft\Signals\Signal(); $result = $signal->emit(new AdminMenuItems()); echo $result[0]->item[0]['label']; // My blog