info = $info; $this->storage_id = $info->get_class_name(); } /** * Builds instance of plugin */ public function build_plugin() { $class_name = apply_filters( self::FILTER_PLUGIN_CLASS, $this->info->get_class_name() ); /** @var AbstractPlugin $plugin */ $this->plugin = new $class_name( $this->info ); } public function store_plugin( PluginStorage $storage ) { $storage->add_to_storage( $this->storage_id, $this->plugin ); } public function init_plugin() { do_action( self::HOOK_BEFORE_PLUGIN_INIT, $this->plugin ); $this->plugin->init(); do_action( self::HOOK_AFTER_PLUGIN_INIT, $this->plugin ); } /** * @return AbstractPlugin */ public function get_plugin() { return $this->plugin; } }