PluginManager
in package
Uses
Singleton
Plugin manager
Tags
Table of Contents
- $noInit : bool
- $app : mixed
- The application instance, since Plugins are an extension of a Service Provider
- $booted : bool
- $disabledPlugins : array<string|int, mixed>
- $instance : mixed
- $metaFile : string
- $normalizedMap : array<string|int, mixed>
- $pathMap : array<string|int, mixed>
- $plugins : array<string|int, mixed>
- $registered : bool
- $registrationMethodCache : array<string|int, mixed>
- __clone() : mixed
- __wakeup() : mixed
- bindContainerObjects() : mixed
- These objects are "soft singletons" and may be lost when the IoC container reboots. This provides a way to rebuild for the purposes of unit testing.
- bootAll() : void
- Runs the boot() method on all plugins. Can only be called once.
- bootPlugin() : void
- Boots the provided plugin object.
- clearDisabledCache() : void
- Clears the disabled plugins cache file
- deletePlugin() : void
- Completely roll back and delete a plugin from the system.
- disablePlugin() : bool
- Disables a single plugin in the system.
- enablePlugin() : bool
- Enables a single plugin in the system.
- exists() : bool
- Check if a plugin exists and is enabled.
- findByIdentifier() : PluginBase|null
- Returns a plugin registration class based on its identifier (Author.Plugin).
- findByNamespace() : PluginBase|null
- Returns a plugin registration class based on its namespace (Author\Plugin).
- findMissingDependencies() : array<string|int, mixed>
- Scans the system plugins to locate any dependencies that are not currently installed. Returns an array of missing plugin codes keyed by the plugin that requires them.
- forgetInstance() : mixed
- Forget this singleton's instance if it exists
- getDependencies() : array<string|int, mixed>
- Returns the plugin identifiers that are required by the supplied plugin.
- getIdentifier() : string
- Resolves a plugin identifier (Author.Plugin) from a plugin class name or object.
- getPluginNamespaces() : array<string|int, mixed>
- Returns a flat array of vendor plugin namespaces and their paths
- getPluginPath() : string|null
- Returns the directory path to a plugin
- getPlugins() : array<string|int, mixed>
- Returns an array with all enabled plugins The index is the plugin namespace, the value is the plugin information object.
- getRegistrationMethodValues() : array<string|int, mixed>
- Spins over every plugin object and collects the results of a method call. Results are cached in memory.
- getVendorAndPluginNames() : array<string|int, mixed>
- Returns a 2 dimensional array of vendors and their plugins.
- hasPlugin() : bool
- Checks to see if a plugin has been registered.
- instance() : mixed
- Create a new instance of this singleton.
- isDisabled() : bool
- Determines if a plugin is disabled by looking at the meta information or the application configuration.
- loadPlugin() : void
- Loads a single plugin into the manager.
- loadPlugins() : array<string|int, mixed>
- Finds all available plugins and loads them in to the $this->plugins array.
- normalizeIdentifier() : string
- Takes a human plugin code (acme.blog) and makes it authentic (Acme.Blog) Returns the provided identifier if a match isn't found
- refreshPlugin() : void
- Tears down a plugin's database tables and rebuilds them.
- registerAll() : void
- Runs the register() method on all plugins. Can only be called once.
- registerPlugin() : void
- Registers a single plugin object.
- sortByDependencies() : mixed
- unregisterAll() : void
- Unregisters all plugins: the inverse of registerAll().
- __construct() : mixed
- Constructor.
- init() : mixed
- Initializes the plugin manager
- loadDependencies() : void
- Cross checks all plugins and their dependancies, if not met plugins are disabled and vice versa.
- loadDisabled() : void
- Loads all disabled plugins from the cached JSON file.
- populateDisabledPluginsFromDb() : void
- Populates information about disabled plugins from database
- sortDependencies() : array<string|int, mixed>
- Sorts a collection of plugins, in the order that they should be actioned, according to their given dependencies. Least dependent come first.
- writeDisabled() : void
- Write the disabled plugins to a meta file.
Properties
$noInit
public
static bool
$noInit
= false
Prevent all plugins from registering or booting
$app
The application instance, since Plugins are an extension of a Service Provider
protected
mixed
$app
$booted
protected
bool
$booted
= false
Flag to indicate that all plugins have had the boot() method called by bootAll() being called on this class.
$disabledPlugins
protected
array<string|int, mixed>
$disabledPlugins
= []
Array of disabled plugins
$instance
protected
static mixed
$instance
$metaFile
protected
string
$metaFile
Path to the JSON encoded file containing the disabled plugins.
$normalizedMap
protected
array<string|int, mixed>
$normalizedMap
= []
A map of normalized plugin identifiers [lowercase.identifier => Normalized.Identifier]
$pathMap
protected
array<string|int, mixed>
$pathMap
= []
A map of plugins and their directory paths.
$plugins
protected
array<string|int, mixed>
$plugins
Container array used for storing plugin information objects.
$registered
protected
bool
$registered
= false
Flag to indicate that all plugins have had the register() method called by registerAll() being called on this class.
$registrationMethodCache
protected
array<string|int, mixed>
$registrationMethodCache
= []
Cache of registration method results.
Methods
__clone()
public
__clone() : mixed
Return values
mixed —__wakeup()
public
__wakeup() : mixed
Return values
mixed —bindContainerObjects()
These objects are "soft singletons" and may be lost when the IoC container reboots. This provides a way to rebuild for the purposes of unit testing.
public
bindContainerObjects() : mixed
Return values
mixed —bootAll()
Runs the boot() method on all plugins. Can only be called once.
public
bootAll([bool $force = false ]) : void
Parameters
- $force : bool = false
-
Defaults to false, if true will force the re-booting of all plugins
Return values
void —bootPlugin()
Boots the provided plugin object.
public
bootPlugin(PluginBase $plugin) : void
Parameters
- $plugin : PluginBase
Return values
void —clearDisabledCache()
Clears the disabled plugins cache file
public
clearDisabledCache() : void
Return values
void —deletePlugin()
Completely roll back and delete a plugin from the system.
public
deletePlugin(string $id) : void
Parameters
- $id : string
-
Plugin code/namespace
Return values
void —disablePlugin()
Disables a single plugin in the system.
public
disablePlugin(string|PluginBase $id[, bool $isUser = false ]) : bool
Parameters
- $id : string|PluginBase
-
Plugin code/namespace
- $isUser : bool = false
-
Set to true if disabled by the user, false by default
Return values
bool —Returns false if the plugin was already disabled, true otherwise
enablePlugin()
Enables a single plugin in the system.
public
enablePlugin(string|PluginBase $id[, bool $isUser = false ]) : bool
Parameters
- $id : string|PluginBase
-
Plugin code/namespace
- $isUser : bool = false
-
Set to true if enabled by the user, false by default
Return values
bool —Returns false if the plugin wasn't already disabled or if the user disabled a plugin that the system is trying to re-enable, true otherwise
exists()
Check if a plugin exists and is enabled.
public
exists(string $id) : bool
Parameters
- $id : string
-
Plugin identifier, eg: Namespace.PluginName
Return values
bool —findByIdentifier()
Returns a plugin registration class based on its identifier (Author.Plugin).
public
findByIdentifier(string|PluginBase $identifier) : PluginBase|null
Parameters
- $identifier : string|PluginBase
Return values
PluginBase|null —findByNamespace()
Returns a plugin registration class based on its namespace (Author\Plugin).
public
findByNamespace(string $namespace) : PluginBase|null
Parameters
- $namespace : string
Return values
PluginBase|null —findMissingDependencies()
Scans the system plugins to locate any dependencies that are not currently installed. Returns an array of missing plugin codes keyed by the plugin that requires them.
public
findMissingDependencies() : array<string|int, mixed>
['Author.Plugin' => ['Required.Plugin1', 'Required.Plugin2']
PluginManager::instance()->findMissingDependencies();
Return values
array<string|int, mixed> —forgetInstance()
Forget this singleton's instance if it exists
public
final static forgetInstance() : mixed
Return values
mixed —getDependencies()
Returns the plugin identifiers that are required by the supplied plugin.
public
getDependencies(string $plugin) : array<string|int, mixed>
Parameters
- $plugin : string
-
Plugin identifier, object or class
Return values
array<string|int, mixed> —getIdentifier()
Resolves a plugin identifier (Author.Plugin) from a plugin class name or object.
public
getIdentifier(mixed $namespace) : string
Parameters
- $namespace : mixed
Return values
string —Identifier in format of Author.Plugin
getPluginNamespaces()
Returns a flat array of vendor plugin namespaces and their paths
public
getPluginNamespaces() : array<string|int, mixed>
Return values
array<string|int, mixed> —['Author\Plugin' => 'plugins/author/plugin']
getPluginPath()
Returns the directory path to a plugin
public
getPluginPath(PluginBase|string $id) : string|null
Parameters
- $id : PluginBase|string
-
The plugin to get the path for
Return values
string|null —getPlugins()
Returns an array with all enabled plugins The index is the plugin namespace, the value is the plugin information object.
public
getPlugins() : array<string|int, mixed>
Return values
array<string|int, mixed> —getRegistrationMethodValues()
Spins over every plugin object and collects the results of a method call. Results are cached in memory.
public
getRegistrationMethodValues(string $methodName) : array<string|int, mixed>
Parameters
- $methodName : string
Return values
array<string|int, mixed> —getVendorAndPluginNames()
Returns a 2 dimensional array of vendors and their plugins.
public
getVendorAndPluginNames() : array<string|int, mixed>
Return values
array<string|int, mixed> —['vendor' => ['author' => 'plugins/author/plugin']]
hasPlugin()
Checks to see if a plugin has been registered.
public
hasPlugin(mixed $namespace) : bool
Parameters
- $namespace : mixed
Return values
bool —instance()
Create a new instance of this singleton.
public
final static instance() : mixed
Return values
mixed —isDisabled()
Determines if a plugin is disabled by looking at the meta information or the application configuration.
public
isDisabled(string|PluginBase $id) : bool
Parameters
- $id : string|PluginBase
Return values
bool —loadPlugin()
Loads a single plugin into the manager.
public
loadPlugin(string $namespace, string $path) : void
Parameters
- $namespace : string
-
Eg: Acme\Blog
- $path : string
-
Eg: plugins_path().'/acme/blog';
Return values
void —loadPlugins()
Finds all available plugins and loads them in to the $this->plugins array.
public
loadPlugins() : array<string|int, mixed>
Return values
array<string|int, mixed> —normalizeIdentifier()
Takes a human plugin code (acme.blog) and makes it authentic (Acme.Blog) Returns the provided identifier if a match isn't found
public
normalizeIdentifier(string $identifier) : string
Parameters
- $identifier : string
Return values
string —refreshPlugin()
Tears down a plugin's database tables and rebuilds them.
public
refreshPlugin(string $id) : void
Parameters
- $id : string
-
Plugin code/namespace
Return values
void —registerAll()
Runs the register() method on all plugins. Can only be called once.
public
registerAll([bool $force = false ]) : void
Parameters
- $force : bool = false
-
Defaults to false, if true will force the re-registration of all plugins. Use unregisterAll() instead.
Return values
void —registerPlugin()
Registers a single plugin object.
public
registerPlugin(PluginBase $plugin[, string $pluginId = null ]) : void
Parameters
- $plugin : PluginBase
-
The instantiated Plugin object
- $pluginId : string = null
-
The string identifier for the plugin
Return values
void —sortByDependencies()
public
sortByDependencies([mixed $plugins = null ]) : mixed
Parameters
- $plugins : mixed = null
Tags
Return values
mixed —unregisterAll()
Unregisters all plugins: the inverse of registerAll().
public
unregisterAll() : void
Return values
void —__construct()
Constructor.
protected
final __construct() : mixed
Return values
mixed —init()
Initializes the plugin manager
protected
init() : mixed
Return values
mixed —loadDependencies()
Cross checks all plugins and their dependancies, if not met plugins are disabled and vice versa.
protected
loadDependencies() : void
Return values
void —loadDisabled()
Loads all disabled plugins from the cached JSON file.
protected
loadDisabled() : void
Return values
void —populateDisabledPluginsFromDb()
Populates information about disabled plugins from database
protected
populateDisabledPluginsFromDb() : void
Return values
void —sortDependencies()
Sorts a collection of plugins, in the order that they should be actioned, according to their given dependencies. Least dependent come first.
protected
sortDependencies() : array<string|int, mixed>
Tags
Return values
array<string|int, mixed> —Array of sorted plugin identifiers and instantiated classes ['Author.Plugin' => PluginBase]
writeDisabled()
Write the disabled plugins to a meta file.
protected
writeDisabled() : void