Your IP : 216.73.216.79


Current Path : /var/www/html/jppmintranetv2/backend/modules/mimin/components/
Upload File :
Current File : /var/www/html/jppmintranetv2/backend/modules/mimin/components/Configs.php

<?php

namespace backend\modules\mimin\components;

use Yii;
use yii\db\Connection;
use yii\caching\Cache;
use yii\helpers\ArrayHelper;

/**
 * Configs
 * Used for configure some value. To set config you can use [[\yii\base\Application::$params]]
 *
 * ~~~
 * return [
 *
 *     'mdm.admin.configs' => [
 *         'db' => 'customDb',
 *         'menuTable' => 'admin_menu',
 *     ]
 * ];
 * ~~~
 *
 * or use [[\Yii::$container]]
 *
 * ~~~
 * Yii::$container->set('mdm\admin\components\Configs',[
 *     'db' => 'customDb',
 *     'menuTable' => 'admin_menu',
 * ]);
 * ~~~
 *
 * @author Misbahul D Munir <misbahuldmunir@gmail.com>
 * @since 1.0
 */
class Configs extends \yii\base\BaseObject
{
	/**
	 * @var Connection Database connection.
	 */
	public $db = 'db';

	/**
	 * @var Cache Cache component.
	 */
	public $cache = 'null';

	/**
	 * @var integer Cache duration. Default to a month.
	 */
	public $cacheDuration = 2592000;

	/**
	 * @var string Menu table name.
	 */
	public $menuTable = '{{%menu}}';

	/**
	 * @var self Instance of self
	 */
	private static $_instance;

	/**
	 * @inheritdoc
	 */
	public function init()
	{
		if ($this->db !== null && !($this->db instanceof Connection)) {
			if (is_string($this->db) && strpos($this->db, '\\') === false) {
				$this->db = Yii::$app->get($this->db, false);
			} else {
				$this->db = Yii::createObject($this->db);
			}
		}
		if ($this->cache !== null && !($this->cache instanceof Cache)) {
			if (is_string($this->cache) && strpos($this->cache, '\\') === false) {
				$this->cache = Yii::$app->get($this->cache, false);
			} else {
				$this->cache = Yii::createObject($this->cache);
			}
		}
		parent::init();
	}

	/**
	 * Create instance of self
	 * @return static
	 */
	public static function instance()
	{
		if (self::$_instance === null) {
			$type = ArrayHelper::getValue(Yii::$app->params, 'mdm.admin.configs', []);
			if (is_array($type) && !isset($type['class'])) {
				$type['class'] = static::className();
			}

			return self::$_instance = Yii::createObject($type);
		}

		return self::$_instance;
	}
}