# Actions

The actions namespace contains interfaces that describe objects which can perform certain actions. It's basically semantic sugar for human convenience. The following interfaces are declared:

* [`InitializableInterface`](https://github.com/deep-web-solutions/wordpress-framework-foundations/blob/master/src/includes/Actions/InitializableInterface.php) -- describes an object that implements an `initialize` method
* [`SetupableInterface`](https://github.com/deep-web-solutions/wordpress-framework-foundations/blob/master/src/includes/Actions/SetupableInterface.php) -- describes an object that implements a `setup` method
* [`OutputtableInterface`](https://github.com/deep-web-solutions/wordpress-framework-foundations/blob/master/src/includes/Actions/OutputtableInterface.php) -- describes an object that implements an `output` method
* [`RunnableInterface`](https://github.com/deep-web-solutions/wordpress-framework-foundations/blob/master/src/includes/Actions/RunnableInterface.php) -- describes an object that implements a `run` method
* [`ResettableInterface`](https://github.com/deep-web-solutions/wordpress-framework-foundations/blob/master/src/includes/Actions/ResettableInterface.php) -- describes an object that implements a `reset` method

The result of the aforementioned methods is either `null` on success, or a specific `Exception` object describing the issue on failure.

{% hint style="info" %}
Semantically, an initializable object should be initialized before calling any other methods on it. If it's also setupable, then the setup should only be run on successful initialization.
{% endhint %}

There is nothing more to the action interfaces. You are obviously free to misuse them in your own plugins, but the framework will adhere to all the hints and conventions laid out in this document.
