diff --git a/composer.json b/composer.json index 5a07474da4b4e84d35dc54d9ba7e7290bbceea53..f9267976aeee29c2940b41428f004a2694b3e161 100644 --- a/composer.json +++ b/composer.json @@ -7,7 +7,8 @@ } ], "require": { - "php": ">=5.5" + "php": ">=5.5", + "wpdesk/wp-basic-requirements": "dev-master" }, "require-dev": { "phpunit/phpunit": "<7", diff --git a/src/Builder/AbstractBuilder.php b/src/Builder/AbstractBuilder.php index 951e9a06102dc41f2f5fafb161f241cb65e5fb25..296089c714749a62a3d0aa3ae3f6a820a975661b 100644 --- a/src/Builder/AbstractBuilder.php +++ b/src/Builder/AbstractBuilder.php @@ -4,23 +4,18 @@ namespace WPDesk\PluginBuilder\Builder; use WPDesk\PluginBuilder\Plugin\AbstractPlugin; -class AbstractBuilder -{ - const FILTER_PLUGIN_CLASS = 'wpdesk_plugin_class'; - const HOOK_BEFORE_PLUGIN_INIT = 'wpdesk_before_plugin_init'; - const HOOK_AFTER_PLUGIN_INIT = 'wpdesk_before_afterinit'; - +class AbstractBuilder { protected static $instances = []; /** * @param string $class * @param AbstractPlugin $object */ - protected function addToStorage($class, $object) { - if (isset(self::$instances[$class])) { - throw new Exception\ClassAlreadyExists("Class {$class} already exists"); + protected function addToStorage( $class, $object ) { + if ( isset( self::$instances[ $class ] ) ) { + throw new Exception\ClassAlreadyExists( "Class {$class} already exists" ); } - self::$instances[$class] = $object; + self::$instances[ $class ] = $object; } /** @@ -28,11 +23,11 @@ class AbstractBuilder * * @return AbstractPlugin */ - protected function getFromStorage($class) { - if (isset(self::$instances[$class])) { - return self::$instances[$class]; + protected function getFromStorage( $class ) { + if ( isset( self::$instances[ $class ] ) ) { + return self::$instances[ $class ]; } else { - throw new Exception\ClassNotExists("Class {$class} not exists in storage"); + throw new Exception\ClassNotExists( "Class {$class} not exists in storage" ); } } } \ No newline at end of file diff --git a/src/Builder/InfoBuilder.php b/src/Builder/InfoBuilder.php index be03ad7646ec7b1a0462c2b3c88fa7c5044c66c8..50c6dba8e8bf21924afc37636afa8a920ce2bd93 100644 --- a/src/Builder/InfoBuilder.php +++ b/src/Builder/InfoBuilder.php @@ -4,38 +4,39 @@ namespace WPDesk\PluginBuilder\Builder; use WPDesk\PluginBuilder\Plugin\AbstractPlugin; -class InfoBuilder extends AbstractBuilder -{ - const FILTER_PLUGIN_CLASS = 'wpdesk_plugin_class'; - const HOOK_BEFORE_PLUGIN_INIT = 'wpdesk_before_plugin_init'; - const HOOK_AFTER_PLUGIN_INIT = 'wpdesk_before_afterinit'; - - /** - * Builds instance of plugin - * - * @return AbstractPlugin - */ - public function build_from_info(\WPDesk_Plugin_Info $info) - { - $class_name = apply_filters( self::FILTER_PLUGIN_CLASS, $info->get_class_name() ); - - /** @var AbstractPlugin $plugin */ - $plugin = new $class_name($info); - $this->addToStorage($info->get_class_name(), $plugin); - - do_action(self::HOOK_BEFORE_PLUGIN_INIT, $plugin); - $plugin->init(); - do_action(self::HOOK_AFTER_PLUGIN_INIT, $plugin); - - return $plugin; - } +class InfoBuilder extends AbstractBuilder { + const FILTER_PLUGIN_CLASS = 'wp_builder_plugin_class'; + const HOOK_BEFORE_PLUGIN_INIT = 'wp_builder_before_plugin_init'; + const HOOK_AFTER_PLUGIN_INIT = 'wp_builder_before_init'; + + /** + * Builds instance of plugin + * + * @param \WPDesk_Plugin_Info $info + * @return AbstractPlugin + * + * @return AbstractPlugin + */ + public function build_from_info( \WPDesk_Plugin_Info $info ) { + $class_name = apply_filters( self::FILTER_PLUGIN_CLASS, $info->get_class_name() ); + + /** @var AbstractPlugin $plugin */ + $plugin = new $class_name( $info ); + $this->addToStorage( $info->get_class_name(), $plugin ); + + do_action( self::HOOK_BEFORE_PLUGIN_INIT, $plugin ); + $plugin->init(); + do_action( self::HOOK_AFTER_PLUGIN_INIT, $plugin ); + + return $plugin; + } /** * @param string $class * * @return AbstractPlugin */ - public function get_plugin_instance($class) { - return $this->getFromStorage($class); - } + public function get_plugin_instance( $class ) { + return $this->getFromStorage( $class ); + } } \ No newline at end of file