HEX
Server: Apache
System: Linux webm004.cluster121.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User: grainesdfo (155059)
PHP: 5.4.45
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/grainesdfo/www/wp-content/plugins/easing-slider/src/Foundation/Plugin.php
<?php

namespace EasingSlider\Foundation;

use Auryn\Injector as Container;
use EasingSlider\Foundation\Contracts\Plugin as PluginContract;

/**
 * Exit if accessed directly
 */
if ( ! defined('ABSPATH')) {
	exit;
}

abstract class Plugin extends Container implements PluginContract
{
	/**
	 * The one true plugin instance
	 *
	 * @var \EasingSlider\Foundation\Plugin
	 */
	private static $instance;

	/**
	 * Aliases
	 *
	 * @var array
	 */
	protected $aliases = array();

	/**
	 * Singletons
	 *
	 * @var array
	 */
	protected $singletons = array();

	/**
	 * Main plugin instance
	 *
	 * Insures that only one instance of our plugin exists in memory at any one
	 * time. Also prevents needing to define globals all over the place.
	 *
	 * @return \EasingSlider\Foundation\Plugin
	 */
	public final static function instance()
	{
		// Create instance if not already created
		if ( ! isset(self::$instance) && ! (self::$instance instanceof static)) {
			self::$instance = new static();
			self::$instance->bindAliases();
			self::$instance->bindSingletons();
			self::$instance->boot();
		}

		return self::$instance;
	}

	/**
	 * __call function.
	 *
	 * @param  string $name
	 * @param  array  $arguments
	 * @return mixed
	 */
	public function __call($name, $arguments)
	{
		if (isset($this->$name)) {
			return $this->$name;
		}
	}

	/**
	 * Bind aliases
	 *
	 * @return void
	 */
	protected function bindAliases()
	{
		foreach ($this->aliases as $contract => $class) {
			$this->alias($contract, $class);
		}
	}

	/**
	 * Bind singletons
	 *
	 * @return void
	 */
	protected function bindSingletons()
	{
		foreach ($this->singletons as $singleton) {
			$this->share($singleton);
		}

		$this->share($this);
	}

	/**
	 * Boots the plugin
	 *
	 * @return void
	 */
	abstract protected function boot();
}