/keen-io-laravel

A minimal service provider and facade to set up and use the Keen.io PHP library in Laravel 5

Primary LanguagePHP

Keen.io Laravel Helper

A service provider and facade to set up and use the Keen.io PHP library in Laravel 5.

Build Status Total Downloads License

This package consists of a service provider, which binds an instance of an initialized Keen.io client to the IoC-container and a Keen facade so you may access all methods of the Keen-io class via the syntax:

$event = ['purchase' => ['item' => 'Golden Elephant']];

Keen::addEvent('purchases', $event);

You should refer to the Keen PHP client for full details about all available methods.

Setup

  1. Install the 'wensleydale/keen-io-laravel' package

    Note, this will also install the required keen-io/keen-io package.

    $ composer require wensleydale/keen-io-laravel:1.*
  2. Update 'config/app.php'

    # Add `KeenLaravelServiceProvider` to the `providers` array
    'providers' => array(
        ...
        Wensleydale\KeenLaravel\KeenLaravelServiceProvider::class,
    )
    
    # Add the `KeenFacade` to the `aliases` array
    'aliases' => array(
        ...
        'Keen' => Wensleydale\KeenLaravel\KeenFacade::class,
    )
  3. Publish the configuration file (creates keen.php in config directory)

    $ php artisan vendor:publish

    Then either edit the keen.php file in the config directory or simply add the following to your .env file:

    KEEN_PROJECT_ID=
    KEEN_MASTER_KEY=
    KEEN_WRITE_KEY=
    KEEN_READ_KEY=

Type Hinting

If you do not wish to make use of the Keen facade you may simply "type-hint" the KeenIOClient dependency in the constructor of a class that is resolved by the IoC container and an instantiated client will be ready for use.

use KeenIO\Client\KeenIOClient;

private $client;

public function __construct(KeenIOClient $client)
{
    $this->client = $client;
}

public function addEvent()
{
	$event = ['purchase' => ['item' => 'Golden Elephant']];    

	$this->client->addEvent('purchases', $event);
    
    //Or overwrite defaults
    $this->client->setProjectId('new-project-id');
}