File "HookableParent.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/flexible-shipping-pro/vendor/wpdesk/wp-builder/src/Plugin/HookableParent.php
File size: 1.25 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace WPDesk\PluginBuilder\Plugin;
trait HookableParent {
/**
* Hookable objects.
*
* @var array[Hookable]
*/
private $hookable_objects = array();
/**
* Add hookable object.
*
* @param Hookable|HookablePluginDependant $hookable_object Hookable object.
*/
public function add_hookable( Hookable $hookable_object ) {
if ( $hookable_object instanceof HookablePluginDependant ) {
$hookable_object->set_plugin( $this );
}
$this->hookable_objects[] = $hookable_object;
}
/**
* Get hookable instance.
*
* @param string $class_name Class name.
*
* @return false|Hookable
*/
public function get_hookable_instance_by_class_name( $class_name ) {
foreach ( $this->hookable_objects as $hookable_object ) {
if ( $hookable_object instanceof $class_name ) {
return $hookable_object;
}
}
return false;
}
/**
* Run hooks method on all hookable objects.
*/
protected function hooks_on_hookable_objects() {
/** @var Hookable $hookable_object $hookable_object */
foreach ( $this->hookable_objects as $hookable_object ) {
if ($hookable_object instanceof Conditional) {
if ($hookable_object::is_needed()) {
$hookable_object->hooks();
}
} else {
$hookable_object->hooks();
}
}
}
}