Skip to content

A WordPress plugin framework built on top of Composer packages.

Notifications You must be signed in to change notification settings

petersuhm/adventure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Adventure

A WordPress plugin framework build on top of Composer packages

Please note that this is still very much a work-in-progress!

/*
 * Plugin Name: My Plugin
 */

use Adventure\WordPressPlugin;

class AwesomePlugin extends WordPressPlugin
{
    // ...
}

$plugin = new AwesomePlugin;

Dependency Injection Container

The WordPressPlugin class in Adventure is built on top of the Container package from the PHP League. This gives us everything we need: automatic dependency resolving, factory closures and service providers.

Event Emitter

The event emitter in Adventure is built on top of the Event package from the PHP League. It wraps the WordPress action API.

use Adventure\Events\EventServiceProvider;

// Enable the event emitter
$plugin->addServiceProvider(new EventServiceProvider);

// You can listen for your own events ...
$plugin['emitter']->when('test.event', function ()
{
    var_dump('event!'); die();
});
// ... and emit them.
$plugin['emitter']->emit('test.event');

Listening for WordPress actions

// Or, you can listen for WordPress actions (do_action())
$plugin['emitter']->whenWordPress('init', function ()
{
    var_dump('WordPress init!'); die();
});

Using classes as event listeners

// You can also implement your own event listeners
$plugin['emitter']->whenWordPress('init', $plugin['SayHelloWhenWordPressIsInitiated']);

// Creating listener classes is awesome, because it
// lets you use services automatically resolved out
// of the DI container
use League\Event\EventInterface;
use League\Event\ListenerInterface;

class SayHelloWhenWordPressIsInitiated implements ListenerInterface
{
    private $service;

    // RandomService is automatically resolved out of the
    // DI container
    public function __construct(RandomService $service)
    {
        $this->service = $service;
    }

    public function handle(EventInterface $event)
    {
        var_dump('Hello!'); die();
    }

    public function isListener($listener)
    {
        return $listener === $this;
    }
}

About

A WordPress plugin framework built on top of Composer packages.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages