Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.

Maslosoft Signals

Wireless Cross-Component Communication

Latest Stable Version License [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/Maslosoft/Signals/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/Maslosoft/Signals/?branch=master) [![Code Coverage](https://scrutinizer-ci.com/g/Maslosoft/Signals/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/Maslosoft/Signals/?branch=master)

Quick Install

composer require maslosoft/signals

Wireless cross-component communication

This component allows for interaction of application components, without prior or explicit assignment.

Setup

Use composer to install

composer require maslosoft/signals:"*"

Or by hard way, download somewhere in your project and ensure autoloading works for Maslosoft\Signals\* and you include dep too;

Setup signals. After calling init any further instance will be configured same as below $signal.

$signal = new Maslosoft\Signals\Signal();
$signal->runtimePath = RUNTIME_PATH;
$signal->paths = [
	MODELS_PATH
];
$signal->init();

Generate signals definition, only once, hook it to your build script etc.

$signal = new Maslosoft\Signals\Signal();
(new Maslosoft\Signals\Utility($signal))->generate();

Usage

Emiting signal

Define signal:

namespace MyNamespace\Signals;

class AccountMenuItems extends AdminMenuItems
{
	public $item = [];
}

Define class with slot with @SlotFor annotation

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'
		];
	}
}

Emit signal and get results of this call:

$signal = new Maslosoft\Signals\Signal();
$result = $signal->emit(new AdminMenuItems());

echo $result[0]->item[0]['label']; // My blog

Gathering signals

About

Signals is a wireless cross component communication subsystem

Topics

Resources

License

Packages

No packages published