> For the complete documentation index, see [llms.txt](https://framework.deep-web-solutions.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://framework.deep-web-solutions.com/plugin/main-plugin-instance.md).

# Main Plugin Instance

Your plugin should have exactly one class that implements the [`PluginInterface`](https://github.com/deep-web-solutions/wordpress-framework-foundations/blob/master/src/includes/Plugin/PluginInterface.php) interface. If you have a very simple plugin, it can be the only class you have, but you need to have it. For convenience, the [`PluginTrait`](https://github.com/deep-web-solutions/wordpress-framework-foundations/blob/master/src/includes/Plugin/PluginTrait.php) trait provides a basic implementation for most methods.

Basically what this interface enforces is a way to retrieve the most useful information from the plugin's [header comment](https://developer.wordpress.org/plugins/plugin-basics/header-requirements/). The [`AbstractPlugin`](https://github.com/deep-web-solutions/wordpress-framework-foundations/blob/master/src/includes/Plugin/AbstractPlugin.php) class even goes a step further and actually retrieves all the values from said comment during the [local initialization action](/foundations-module/actions/local-action-traits.md).

Therefore it would be enough to have a file `Plugin.php` that looks a bit like this:

```php
<?php

namespace DeepWebSolutions\Plugins\MyTestPlugin;

use DeepWebSolutions\Framework\Foundations\Plugin\AbstractPlugin;

\defined( 'ABSPATH' ) || exit;

class MyPlugin extends AbstractPlugin {
    public function get_plugin_file_path(): string {
        return $path_to_file_with_plugin_header_comment;
    }
}

$plugin = new MyPlugin();
$plugin->initialize();

echo $plugin->get_plugin_version(); // echoes whatever the version header line is set to

```

As always, our [example plugin](https://github.com/deep-web-solutions/wordpress-plugins-utility) provides a more complex example (albeit it relies on the extended classes provided by the [Core Module](https://packagist.org/packages/deep-web-solutions/wp-framework-core)).
