PHPackages                             ufo-engineering/ko-events - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. ufo-engineering/ko-events

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

ufo-engineering/ko-events
=========================

Event system for Kohana framework

v2.0.2(8y ago)2125MITPHPPHP &gt;=5.2.4

Since Nov 23Pushed 8y ago1 watchersCompare

[ Source](https://github.com/ufo-engineering/ko-events)[ Packagist](https://packagist.org/packages/ufo-engineering/ko-events)[ Docs](https://github.com/ufo-engineering/kohana-events)[ RSS](/packages/ufo-engineering-ko-events/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

ko-events
=========

[](#ko-events)

This version was transformed (`*with some changes`) from this package, special for using through composer

### Event system for Kohana framework

[](#event-system-for-kohana-framework)

Released on 2017-11-20

By ufo-engineering

Installation
------------

[](#installation)

composer require ufo-engineering/ko-events

Configuration
-------------

[](#configuration)

Copy `..vendor/ufo-engineering/ko-events/config/events.php` to `application/config/events.php`. All events and their handlers have to be registered in `application/config/events.php` configuration file (by default). But, if `events.php` not exists, the library will try to get config from DB. You should execute dump of config tables from this file `events_tables.sql`. At the moment, if you choose DB for to store config data, you should add specific data manually. So, for ordinary tasks, we recommended use config-file. Configuration is devised into four parts for each environment, but you can add your own. To register an event, put it's class name as an array key and it's handlers as values.

Example:

```
return [
    'events_handlers' => [
        'Event_Test'       => ['Handler_EventTest'], //Event_Test is real class in dir application/classes/Event/Test.php
        'someTestMethod'   => ['Handler_EventTest'] // alias, for example method name
        //...
        ]
];
```

Usage
-----

[](#usage)

- Create an event class ... application/classes/Event/Test.php

```
/**
 * Class Event_Test
 *
 * Fired when we do something
 */
class Event_Test
{
    /**
     * @var Model_Test
     */
    public $test;

    /**
     * @param Model_Test $test
     */
    function __construct(Model_Test $test)
    {
        $this->test = $test;
    }
}
```

- Create a handler class

```
/**
 * Class Handler_EventTest
 *
 * For example: sends an email notification to user about successful registration
 */
class Handler_EventTest implements Ufo\Handler\EventHandler
{
    /**
     * Handle an event
     *
     * @param Handler_EventTest $event
     *
     * @return bool|null
     */
    public function handle($event)
    {
        // TODO send email
    }
}
```

- Fire event

```
use Ufo\Event;

Event::fire(new Event_Test($user));
OR
Event::fire('someTestMethod', $user);
```

All event handlers will be executed in the same order they are defined in `events.php` file or DB. By making `handle` method to return `false`, you can break the chain and no further handlers will be executed.

Extra
-----

[](#extra)

There is an extra class `EventHandlerNotification` for handling event notification easily. However it requires Kohana emails module from  or you can adapt email sending for your needs.

To use this helper, simply make your handlers to extend this class and implement `formatSubject` and `getReceivers` methods.

Example:

```
/**
 * Class Event_Handler_User_SendWelcomeEmail
 *
 * Sends an email notification to user about successful registration
 */
class Event_Handler_User_SendWelcomeEmail extends Ufo\Handler\Notification\EventHandlerNotification implements Ufo\Handler\EventHandler
{
    /**
     * Handle an event
     *
     * @param Event_User_Registered $event
     *
     * @return bool|null
     */
    public function handle($event)
    {
        $this->send($event, 'Welcome aboard user ' . $event->user->username . '!');
    }

    /**
     * Format email notification subject
     *
     * @param Event_User_Registered $event
     *
     * @return string
     */
    protected function formatSubject($event)
    {
        return 'Welcome ' . $user->username;
    }

    /**
     * Get notification receivers list
     *
     * @param Event_User_Registered $event
     *
     * @return array
     */
    protected function getReceivers($event)
    {
        return array(
            $event->user->email => $event->user->username
        );
    }
}
```

### Tables

[](#tables)

```
CREATE TABLE `action_handlers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `placeholders` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `system_actions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `description` varchar(255) DEFAULT NULL,
  `handler_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

```

`*with some changes:`

1. added support of aliases
2. added DB config tables

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3088d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/409582daaefdb4f6ce9f2850546b17ccfa7943ef43bc0fac5b62aa9cad52bba6?d=identicon)[DuckDuck](/maintainers/DuckDuck)

---

Tags

eventhelperkohanamodulesystem

### Embed Badge

![Health badge](/badges/ufo-engineering-ko-events/health.svg)

```
[![Health](https://phpackages.com/badges/ufo-engineering-ko-events/health.svg)](https://phpackages.com/packages/ufo-engineering-ko-events)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
