Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Slim, powerful and full compatible PSR-14 event manager library for PHP

License

NotificationsYou must be signed in to change notification settings

phoole/event

Repository files navigation

Build StatusScrutinizer Code QualityCode ClimatePHP 7Latest Stable VersionLicense

Slim, powerful and full compatible PSR-14 event manager library for PHP.

Installation

Install via thecomposer utility.

composer require "phoole/event"

or add the following lines to yourcomposer.json

{"require": {"phoole/event":"1.*"    }}

Features

  • Full PSR-14 support

  • Support for classes want event-triggering capability withEventCapableTrait

  • Support for classes want event-listening capability withListenerCapableTrait

Usage

  • Quick start

    usePhoole\Event\Provider;usePhoole\Event\Dispatcher;usePhoole\Event\Events\StoppableEvent;// create your own event classclass MyEventextends StoppableEvent {}// an invokable class for event handlingclass MyEventHandler{publicfunction__invoke(MyEvent$event)    {echo'handling event...';return$event;// optional    }}// initiate event dispatcher$events =newDispatcher(newProvider());// bind a callable with default priority 50 (0-100)$provider->attach(function(myEvent$event) {echo'triggered...';return$event;// optional});// bind a invokable object with priority 80$provider->attach(newMyEventHandler(),80);// fire the trigger, wil see output 'handling event...triggered...'$events->dispatch(newMyEvent());
  • Event hierarchy

    Instead of using event name to trigger like many event libraries were doing.PSR-14 compliant event libraries now only support triggering with event object.By setting up a meaningful event object hierarchy, developers may achieve greatflexibility in event handling.

    Listeners willONLY handle the events (and their subclasses) configuredwith the event parameter.

    usePhoole\Event\Events\StoppableEvent;// my own event hierarchy topclass MyEventextends StoppableEvent{}// my user authentication eventclass MyAuthEventextends MyEvent{protected$userInfo;publicfunction__construct(array$userInfo)    {$this->userInfo =$userInfo;    }publicfunctiongetUserInfo():array    {return$this->userInfo;    }}$provider =newProvider();$events =newDispatcher($provider);// attach a listener to the event hierarchy top$provider->attach(function(MyEvent$event) {echo'Event'.get_class($event).' fired';return$event;// optional});// attach a listener for logging users$provider->attach(function(MyAuthEvent$event))use ($logger) {$logger->info(sprintf("User '%s' logged",$event->getUserInfo()['name']));return$event;// optional});...// upon user logged in, trigger the event// BOTH listeners will process THIS event$events->dispatcher(newMyAuthEvent($userInfo));
  • Create alistener class

    A listener class may implement theListenerCapableInterface and useListenerCapableTrait.

    usePhoole\Event\ListenerCapableTrait;usePhoole\Event\ListenerCapableInterface;// my listener classclass MyListenerimplements ListenerCapableInterface{use ListenerCapableTrait;// define on listener methodpublicfunctionMethodOne(MyEvent$event)    {echo'handling MyEvent in MethodOne...';    }// define another listener methodpublicfunctionMethodTwo(MyEvent$event)    {echo'handling MyEvent in MethodTwo...';    }// config this listenerprotectedfunctioneventsListening()    {return ['MethodOne',            ['MethodTwo',80]// with priority 80        ];    }}// global dispatcher & provider$provider =newProvider();$events =newDispatcher($provider);// set provider is enough$listener =newMyListener();$listener->setProvider($provider);// fire the event$events->dispatch(newMyEvent());

    Along with container libraryphoole/di, developer may not event worryabout setting up dispatcher, provider or injecting the provider.

    usePhoole\Di\Container;// initiate the listener with dependencies injected$listener = Container::create(MyListener::class);// fire the eventContainer::events()->dispatch(newMyEvent());
  • Triggering events in your classes

    EventCapableInterface andEventCapableTrait give developers the abilityof triggering events in their classes.

    usePhoole\Event\EventCapableTrait;usePhoole\Event\EventCapableInterface;class MyEventCapableimplements EventCapableInterface{use EventCapableTrait;publicfunctionmyMethod()    {$this->triggerEvent(newMyEvent());    }}// global dispatcher & provider$provider =newProvider();$events =newDispatcher($provider);$eventCapable =newMyEventCapable();$eventCapable->setDispatcher($dispatcher);// will trigger an event$eventCapable->myMethod();

    Along with container libraryphoole/di, developer may not event worryabout setting up dispatcher, provider or injecting the dispatcher.

    // initiate object with dependencies injected$eventCapable = Container::create(MyEventCapable::class);// will trigger an event$eventCapable->myMethod();

Testing

$ composertest

Dependencies

  • PHP >= 7.2.0

  • Phoole/base 1.*

License

About

Slim, powerful and full compatible PSR-14 event manager library for PHP

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors2

  •  
  •  

Languages


[8]ページ先頭

©2009-2025 Movatter.jp