# Installation

## How to include
Installing the Plugin is pretty much as with every other CakePHP Plugin.

```
composer require dereuromark/cakephp-tools
```

Details @ https://packagist.org/packages/dereuromark/cakephp-tools

This will load the plugin (within your boostrap file):
```php
Plugin::load('Tools');
```
or
```php
Plugin::loadAll(...);
```

In case you want the Tools bootstrap file included (recommended), you can do that in your `ROOT/config/bootstrap.php` with

```php
Plugin::load('Tools', ['bootstrap' => true]);
```

or

```php
Plugin::loadAll([
		'Tools' => ['bootstrap' => true]
]);
```

## Namespacing
Using Cake3 and namespaces, don't forget to add "Tools" as namespace to new files.
Also don't forget the `use` statements.

If you create a new behavior in the plugin, it might look like this:
```php
namespace Tools\Model\Behavior;

use Cake\ORM\Behavior;

class CoolBehavior extends Behavior {
}
```

For a new APP behavior "MySlugged" that extends "Tools.Slugged" it is:
```php
namespace App\Model\Behavior;

use Tools\Model\Behavior\SluggedBehavior;

class MySluggedBehavior extends SluggedBehavior {
}
```
Note that use statements should be in alphabetical order.
See CakePHP coding standards for details.

### Internal handling via plugin dot notation
Internally (method access), you don't use the namespace declaration. The plugin name suffices:
```php
// In a Table
$this->addBehavior('Tools.Slugged'); // Adding SluggedBehavior

// In a View
$this->loadHelper('Tools.Foo'); // Adding FooHelper

// In a Controller (deprecated)
public $helpers = ['Tools.Foo']; // Adding FooHelper
```

### Class Alias Shortcuts

For Configure usage especially in view files, you can add this to the bootstrap:
```php
class_alias('Cake\Core\Configure', 'Configure');
```
This avoids having to add tons of `use` statements at the top of your view ctps.
But using the helper is preferred and a bit cleaner (`$this->loadHelper('Shim.Configure')`);
