Server : LiteSpeed
System : Linux server64.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
User : nimalaab ( 3358)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /home/nimalaab/public_html/wp-content/themes/as/lib/colibriwp/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : /home/nimalaab/public_html/wp-content/themes/as/lib/colibriwp/src/ComponentsRepository.php
<?php


namespace ColibriWP\Theme;

use ColibriWP\Theme\Core\ComponentInterface;
use ColibriWP\Theme\Core\Hooks;

class ComponentsRepository {

	private $entities = array();

	public function load() {
		$components = Hooks::prefixed_apply_filters( 'components', array() );

		foreach ( $components as $key => $class ) {

			$this->add( $key, $class );
		}
	}


	/**
	 * @param $id
	 *
	 * @return null|ComponentInterface
	 */
	private function getInstance( $id ) {

		if ( ! $this->entities[ $id ] ['instance'] ) {
			$class = $this->entities[ $id ]['class'];

			$this->entities[ $id ] = array(
				'class'    => $this->entities[ $id ]['class'],
				'instance' => new $class(),
			);
		}

		return $this->entities[ $id ]['instance'];
	}

	/**
	 * @param $id
	 *
	 * @return ComponentInterface|null
	 */
	public function getByName( $id ) {

		if ( array_key_exists( $id, $this->entities ) ) {
			return $this->getInstance( $id );
		}

		return null;
	}


	/**
	 * @return array
	 */
	public function getAllDefinitions() {
		$result = array();

		foreach ( $this->entities as $key => $entity ) {
			$result[ $key ] = $entity['class'];
		}

		return $result;
	}

	/**
	 * @param $component_name
	 * @param $class
	 */
	public function add( $component_name, $class ) {
		$this->entities[ $component_name ] = array(
			'class'    => $class,
			'instance' => null,
		);
	}
}

F1le Man4ger