infrajs/event

There is no license information available for the latest version (v1.0.13) of this package.
Maintainers

👁 akiyatkin

Package info

github.com/infrajs/event

pkg:composer/infrajs/event

Statistics

Installs: 2 782

Dependents: 20

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.13 2020-08-05 09:47 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

Unknown License 95d90a966603316bd4c7462ad70bf2d00c80890d

This package is auto-updated.

Last update: 2026-06-05 22:51:20 UTC


README

События позволяют реализовать сложную связь разных расширений. Сделать взаимодействие двух расширений более универсальным и стандартизированным. Используя определённые события из расширения А, расширение Б может выполнять свои задачи, о которых расширению А заранее ничего не было известно, что и обеспечивает меньшую связанность.

Установка через composer

{
	"require":{
		"infrajs/event":"~1"
	}
}

Использование

Тестирование

Для выполнение тестов откройте в браузере /vendor/infrajs/event/tester.php

Описание

Event::handler('onshow', function(){
	echo 'onshow';
});
Event::fire('onshow');
Event::handler('print', function(){
	echo 'World';
}, ':somekey');
Event::handler('print', function(){
	echo 'Hello ';
},'somekey');
Event::fire('print');
Есть нативный объект ```Event``` по этому в javascript нужно использовать ```Events```
Events.handler('print', function(){
	console.log('World');
}, ':somekey');
Events.handler('print', function(){
	console.log('Hello ');
},'somekey');
Events.fire('print');

Наличие события c Hello не обязательно для того чтобы сработала подписка с World, но если такой handler есть, то World сработает вторым, после обработчика с клчём somekey.

Если все подписки имеют ключи и нет ниодного выполненного ключа, то будет выполнена первая подписка в очереди.

Работа с Infrajs

При генерации событий Event все конфиги установленных или необходимых модулей должны быть обработаны. Чтобы были собраны все подписки.

	\infrajs\config\Config::get();

Другими словами, использование событий обязывает собирать конфиги всех установленных расширений.

События одного класса

Если генерируется событие для Класса нужно указать критерий отличия передаваемых объектов друг от друга. Объект данных это ассоциативный массив и требуется ключ, который будет определять уникальность всего массива.

Event::$classes["Yml"] = function($pos) { 
	return $pos["producer"].$pos["article"];
};

$res = Event::fire('Yml.oncheck', $pos); 
//$pos, например, массив с данными позиции каталога. Уникальность позиции определяется производителем и артикулом.