EventLoader Module for ProcessWire CMS/CMF
EventLoader module allow you to load events from a event files.
Requirements
- ProcessWire 
3.0 or newer - PHP 
7.0 or newer 
Installation
Install the module from the modules directory:
Via Composer:
composer require trk/processwire-event-loader
Via git clone:
cd your-processwire-project-folder/
cd site/modules/
git clone https://github.com/trk/EventLoader.git
- Module will check below folders for events:
 
/site/templates/events
/site/templates/configs/events
/site/modules/*/events
/site/modules/*/configs/events
- Loading events from 
site/ready.php file 
<?php namespace ProcessWire;
if(!defined("PROCESSWIRE")) die();
EventLoader::load(__DIR__ . '/templates', 'ready.');
- Event file: 
site/templates/configs/events/ready.hello-world.php 
<?php
namespace ProcessWire;
class HelloController
{
    public function greeting()
    {
        echo 'Hello World !';
        exit;
    }
}
return [
    // 'run' => true, // Also you can pass run option for this file
    'events' => [
        '/hello-world' => [HelloController::class, 'greeting'],
        'Page::private' => [
            'run' => wire()->user->isLoggedin()
            'type' => 'method',
            'fn' => function (HookEvent $e) {
                $e->return = 'This will run, if user logged in';
            }
        ],
        'Page::hello' => [
            'type' => 'method',
            'fn' => function (HookEvent $e) {
                $message = is_string($e->arguments(0)) ? $e->arguments(0) : '';
                $e->return = $message;
            }
        ]
    ]
];
<?php
echo $page->hello('World');